我正在尝试左连接 PHP 中的表。我对左连接完全是菜鸟,我不知道我做错了什么!
$value=$_GET['value'];
$storeid=$_GET['store'];
$id=$_GET['id'];
$latitude=$_GET['lat'];
$longitude=$_GET['long'];
$result = mysqli_query($con,"SELECT carlist.id, carlist.vin, link_qr.qr, link_qr.vin
FROM link_qr, carlist LEFT JOIN link_qr.vin ON carlist.vin
WHERE qr="$value";");
while($row = mysqli_fetch_array($result)) {
echo $row['id'];
echo $row['vin'];
echo $row['qr'];
}
这是表结构
表格:link_qr
id------vin---------qr------webid---------other
表:carlist
id---stknum---vin----vt----stat---other---store_id---web_code---qrcode
当一切完成后,我想要以下内容。
我想加入 carlist 和 link_qr,其中 vins 彼此相等,然后我需要它返回 carlist id,其中 vin 等于 qr。
以下是我遇到的错误:
**Notice: Undefined index: store in /api/app_request/left_join.php on line 13
Notice: Undefined index: id in /api/app_request/left_join.php on line 14
Notice: Undefined index: lat in /api/app_request/left_join.php on line 15
Notice: Undefined index: long in /api/app_request/left_join.php on line 16
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in api/app_request/left_join.php on line 22**
最佳答案
有几点需要注意:
首先,您的 SQL 查询不正确:
SELECT carlist.id, carlist.vin, link_qr.qr, link_qr.vin
FROM carlist
LEFT JOIN linkqr ON linkqr.vin=carlist.vin
WHERE qr="$value";
只要这些表和列存在,就应该是正确的格式。然而,其次,您不应该使用未转义的值查询数据库。这会导致 SQL 注入(inject)。更合适的做法是,您可以编写如下查询:
$query = <<<SQL
SELECT carlist.id, carlist.vin, link_qr.qr, link_qr.vin
FROM carlist
LEFT JOIN linkqr ON linkqr.vin=carlist.vin
WHERE qr=?
SQL;
$stmt = mysqli_prepare($query);
mysqli_bind_param($stmt, "s", $value); // this sets the ? in the sql query to $value
mysqli_execute($stmt);
$result = mysqli_get_result($stmt);
while($row = mysqli_fetch_array($result)) {
echo $row['id'];
echo $row['vin'];
echo $row['qr'];
}
关于PHP 左连接不显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28565743/