[英]Fetch SQL data from same table of different column
我正在使用 get 请求来获取serial
并将其放入查询中。
$id = $_GET['id'];
$select = $pdo->prepare("SELECT * FROM tbl_product WHERE serial='.$id.'");
$select->execute();
while($row = $select->fetch(PDO::FETCH_OBJ)){
echo '
<tr>
<td>'.$row->pname.'</td>
<td>'.$row->pcategory.'</td>
<td>'.$row->serial.'</td>
<td>'.$row->sku.'</td>
';
}
我的表看起来像这样,我尝试对同一个表使用内部联接,但没有用。 当用户通过 get 请求localhost?id=12345678
serial
。 我希望它显示item1
- item3
,与其SKU
匹配
id | sku | serial | product_name
0 | ABC | 12345678 | item1
1 | ABC | 87654321 | item2
2 | ABC | 23456789 | item3
3 | DEF | 56789234 | item4
您可以像这样尝试内部联接:
select id, c.sku, serial, product_name from table_name t
inner join (
select sku from table_name where serial ='12345678'
)c on t.sku = c.sku
在您的代码中:
$id = $_GET['id'];
$query = "select id, c.sku, serial, product_name from table_name t
inner join (
select sku from table_name where serial = :serial
)c on t.sku = c.sku";
$select = $pdo->prepare($query);
$select->bindParam(':serial', $id);
$select->execute();
while($row = $select->fetch(PDO::FETCH_OBJ)){
echo '
<tr>
<td>'.$row->pname.'</td>
<td>'.$row->pcategory.'</td>
<td>'.$row->serial.'</td>
<td>'.$row->sku.'</td>
';
}
不要相信任何输入,使用prepare
和bindParam
来避免 SQL 注入。 您可以在此处参考 SQL 注入https://www.php.net/manual/en/security.database.sql-injection.php
就像是
select * from tbl_product where sku = (select sku from tbl_product where serial = :serial)
可能会这样做,假设是 PDO 准备好的语句。
自加入
$select = $pdo->prepare("SELECT * FROM tbl_product P1 LEFT JOIN tbl_product P2 ON P2.sku = P1.sku WHERE P1.serial='.$id.'")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.