Ajax 响应 Php 文件中的 Concat 函数破坏了脚本
Concat function in the Ajax response Php file breaks the script
我正在尝试在 Ajax 脚本的 php 响应文件中连接两个变量。
响应文件如下:
$company_id=$_POST['company']:
$query="SELECT `contact_company`.`contact_id`, CONCAT(`surname`,' '.`fname`), `contact_company`.`company_id` FROM `seta`.`contact_company` AS `contact_company`, `seta`.`contacts` AS `contacts` WHERE `contact_company`.`contact_id` = `contacts`.`contact_id` AND `contact_company`.`company_id` ='".$company_id."' ";
$result=mysqli_query($connection,$query) or die ("Query to get data from contact_company table failed: ".mysqli_connect_error());
while ($row=mysqli_fetch_array($result)) {
$contact_id=$row["contact_id"];
$company_id=$row["company_id"];
$contact_name=$row["CONCAT(`surname`,' ',`fname`)"];
echo "<option value=\"$contact_id\">
$contact_name
</option>";
}
虽然 CONCAT 的这种语法在其他 php 文件中可以完美运行,但在这里却不行。有人可以建议吗?
谢谢
此致
托马索
您的 CONCAT 语法错误。请参阅下面的正确版本。
$query="SELECT `contact_company`.`contact_id`, CONCAT(`surname`,' ',`fname`), `contact_company`.`company_id` FROM `seta`.`contact_company` AS `contact_company`, `seta`.`contacts` AS `contacts` WHERE `contact_company`.`contact_id` = `contacts`.`contact_id` AND `contact_company`.`company_id` ='".$company_id."' ";
希望对您有所帮助。
在您的 sql 查询中使用别名。在本例中,它是 CONCAT(..)
结果的全名。
$query="SELECT `contact_company`.`contact_id`, CONCAT(`surname`,' '.`fname`) as fullname, `contact_company`.`company_id` FROM `seta`.`contact_company` AS `contact_company`, `seta`.`contacts` AS `contacts` WHERE `contact_company`.`contact_id` = `contacts`.`contact_id` AND `contact_company`.`company_id` ='".$company_id."' ";
在你的 while 循环中替换为:
$contact_name=$row["fullname"];
你的第一条语句也以冒号 :
而不是分号 ;
结尾
将第一行更改为:
$company_id=$_POST['company'];
这里的主要问题似乎是您用冒号而不是分号结束了 php 语句,即 $_POST['company']:
.
此外,您的 MySQL CONCAT
功能有问题。在你的代码中它有:
`CONCAT(`surname`,' '.`fname`)`
这应该用逗号分隔每个字符串文字或字段。此外,您在 fname
之前有一个领先期 .
,例如:
`CONCAT(`surname`, ' ', `fname`)`
或者如果 fname
字段出现在多个表中因此需要别名,您应该指定:
`CONCAT(`surname`, ' ', `contacts`.`fname`)`
下面是固定版本,请试试这个。
$company_id = $_POST['company'];
$query = "SELECT `contact_company`.`contact_id`, CONCAT(`surname`, ' ', `fname`) AS `fullname`, `contact_company`.`company_id` FROM `seta`.`contact_company` AS `contact_company`, `seta`.`contacts` AS `contacts` WHERE `contact_company`.`contact_id` = `contacts`.`contact_id` AND `contact_company`.`company_id` ='" . mysqli_real_escape_string($company_id) . "' ";
$result = mysqli_query($connection, $query) or die("Query to get data from contact_company table failed: " . mysqli_connect_error());
while ($row = mysqli_fetch_array($result)) {
$contact_id = $row["contact_id"];
$company_id = $row["company_id"];
$contact_name = $row["fullname"];
echo "<option value=\"$contact_id\">
$contact_name
</option>";
}
您的 sql CONCAT 函数有问题,应该是:
CONCAT(
姓,' ',
姓)
$company_id=$_POST['company']:
$query="SELECT `contact_company`.`contact_id`, CONCAT(`surname`,' ',`fname`), `contact_company`.`company_id` FROM `seta`.`contact_company` AS `contact_company`, `seta`.`contacts` AS `contacts` WHERE `contact_company`.`contact_id` = `contacts`.`contact_id` AND `contact_company`.`company_id` ='".$company_id."' ";
$result=mysqli_query($connection,$query) or die ("Query to get data from contact_company table failed: ".mysqli_connect_error());
while ($row=mysqli_fetch_array($result)) {
$contact_id=$row["contact_id"];
$company_id=$row["company_id"];
$contact_name=$row["CONCAT(`surname`,' ',`fname`)"];
echo "<option value=\"$contact_id\">
$contact_name
</option>";
}
我正在尝试在 Ajax 脚本的 php 响应文件中连接两个变量。
响应文件如下:
$company_id=$_POST['company']:
$query="SELECT `contact_company`.`contact_id`, CONCAT(`surname`,' '.`fname`), `contact_company`.`company_id` FROM `seta`.`contact_company` AS `contact_company`, `seta`.`contacts` AS `contacts` WHERE `contact_company`.`contact_id` = `contacts`.`contact_id` AND `contact_company`.`company_id` ='".$company_id."' ";
$result=mysqli_query($connection,$query) or die ("Query to get data from contact_company table failed: ".mysqli_connect_error());
while ($row=mysqli_fetch_array($result)) {
$contact_id=$row["contact_id"];
$company_id=$row["company_id"];
$contact_name=$row["CONCAT(`surname`,' ',`fname`)"];
echo "<option value=\"$contact_id\">
$contact_name
</option>";
}
虽然 CONCAT 的这种语法在其他 php 文件中可以完美运行,但在这里却不行。有人可以建议吗? 谢谢 此致
托马索
您的 CONCAT 语法错误。请参阅下面的正确版本。
$query="SELECT `contact_company`.`contact_id`, CONCAT(`surname`,' ',`fname`), `contact_company`.`company_id` FROM `seta`.`contact_company` AS `contact_company`, `seta`.`contacts` AS `contacts` WHERE `contact_company`.`contact_id` = `contacts`.`contact_id` AND `contact_company`.`company_id` ='".$company_id."' ";
希望对您有所帮助。
在您的 sql 查询中使用别名。在本例中,它是 CONCAT(..)
结果的全名。
$query="SELECT `contact_company`.`contact_id`, CONCAT(`surname`,' '.`fname`) as fullname, `contact_company`.`company_id` FROM `seta`.`contact_company` AS `contact_company`, `seta`.`contacts` AS `contacts` WHERE `contact_company`.`contact_id` = `contacts`.`contact_id` AND `contact_company`.`company_id` ='".$company_id."' ";
在你的 while 循环中替换为:
$contact_name=$row["fullname"];
你的第一条语句也以冒号 :
而不是分号 ;
将第一行更改为:
$company_id=$_POST['company'];
这里的主要问题似乎是您用冒号而不是分号结束了 php 语句,即 $_POST['company']:
.
此外,您的 MySQL CONCAT
功能有问题。在你的代码中它有:
`CONCAT(`surname`,' '.`fname`)`
这应该用逗号分隔每个字符串文字或字段。此外,您在 fname
之前有一个领先期 .
,例如:
`CONCAT(`surname`, ' ', `fname`)`
或者如果 fname
字段出现在多个表中因此需要别名,您应该指定:
`CONCAT(`surname`, ' ', `contacts`.`fname`)`
下面是固定版本,请试试这个。
$company_id = $_POST['company'];
$query = "SELECT `contact_company`.`contact_id`, CONCAT(`surname`, ' ', `fname`) AS `fullname`, `contact_company`.`company_id` FROM `seta`.`contact_company` AS `contact_company`, `seta`.`contacts` AS `contacts` WHERE `contact_company`.`contact_id` = `contacts`.`contact_id` AND `contact_company`.`company_id` ='" . mysqli_real_escape_string($company_id) . "' ";
$result = mysqli_query($connection, $query) or die("Query to get data from contact_company table failed: " . mysqli_connect_error());
while ($row = mysqli_fetch_array($result)) {
$contact_id = $row["contact_id"];
$company_id = $row["company_id"];
$contact_name = $row["fullname"];
echo "<option value=\"$contact_id\">
$contact_name
</option>";
}
您的 sql CONCAT 函数有问题,应该是:
CONCAT(
姓,' ',
姓)
$company_id=$_POST['company']:
$query="SELECT `contact_company`.`contact_id`, CONCAT(`surname`,' ',`fname`), `contact_company`.`company_id` FROM `seta`.`contact_company` AS `contact_company`, `seta`.`contacts` AS `contacts` WHERE `contact_company`.`contact_id` = `contacts`.`contact_id` AND `contact_company`.`company_id` ='".$company_id."' ";
$result=mysqli_query($connection,$query) or die ("Query to get data from contact_company table failed: ".mysqli_connect_error());
while ($row=mysqli_fetch_array($result)) {
$contact_id=$row["contact_id"];
$company_id=$row["company_id"];
$contact_name=$row["CONCAT(`surname`,' ',`fname`)"];
echo "<option value=\"$contact_id\">
$contact_name
</option>";
}