gpt4 book ai didi

php - 打印 id 一次 PHP PDO

转载 作者:太空宇宙 更新时间:2023-11-03 11:47:52 24 4
gpt4 key购买 nike

我有这段代码 php/pdo,它工作正常

$id = (int)$_GET['id'];
$place = $DB_con->prepare("SELECT * FROM `post` WHERE `category`=".$id."");
$place->execute();

foreach ($place->fetchAll() as $rawp){
$mains = $DB_con->prepare("SELECT * FROM `place` WHERE `id`=".$rawp['placeid']."");
$mains->execute();

foreach ($mains->fetchAll() as $rawps){
echo $rawps['id'].'<br/>';
}
}

代码的结果是这样的

113
114
125
122
122
127
127

我的问题是:如何只打印一次每个地点 ID?我不想要像 ID 122 这样的重复项。

最佳答案

SQL 可以用 DISTINCT 为您做到这一点,如果您 JOIN 两个表,您只需要一个 SQL 语句,甚至不需要 选择 * 所有列,但只选择您想要的列:

$places = $DB_con->prepare("SELECT DISTINCT `place`.`id`
FROM `post` JOIN `place` ON `post`.`placeid` = `place`.id
WHERE `post`.`category`=:category");
$places->execute(array('category' => $_GET['id']));
foreach ($places->fetchAll() as $place) {
echo $place['id'] . '<br />';
}

此解决方案比执行两个语句然后以编程方式减少数据的性能更高,而且最重要的是,在 WHERE 中使用变量绑定(bind)(:category)部分子句,它可以防止 SQL 注入(inject)。永远不要通过连接来自 $_GET、$_POST 或 $_REQUEST 的数据来创建 SQL 语句字符串。

关于php - 打印 id 一次 PHP PDO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37495000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com