PHP 左连接不显示结果

标签 php mysql join left-join

我正在尝试左连接 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/

相关文章:

javascript - 向包含选择框的表单添加新行

php - 如何使用 mySql 唯一 ID/列名称搜索记录?

密码和哈希的 PHP AES 加密

mysql - 将 MySQL "get top y for each n"GROUP BY 查询转换为 PostgreSQL

hibernate - JPA/Hibernate 中的条件/复合 JoinColumn

php - 通过 PHP 应用程序使用 tomcat 服务器发送电子邮件

mysql - SQL Select - 复杂查询中的日期比较

mysql - 带有 mysql2 gem 的 Ruby 脚本 - 将数据库日期与 Date.new 进行比较

mysql - 合并两个表

java - Hibernate从连接表中获取数据