gpt4 book ai didi

php - sql选择匹配数组的元素并显示在一行中

转载 作者:行者123 更新时间:2023-11-28 23:37:17 25 4
gpt4 key购买 nike

我有一个带有多个复选框的表单,客户可以在其中选择一个或多个项目

我将值传递给页面 php,其中使用语句选择,我获取从数据库中选择的项目的价格和图像。

ID | Name | Price | Images  | item
1 | bob | 10 | link | a
2 | bob | 5 | link | b
3 | bob | 5 | link | c
4 | bob | 5 | link | d

我想显示连续选择的项目的结果,如:

bob   a b  

当客户再选择一项时,下面的代码不允许看到此结果。

    // $_POST['choices'] array 
$result = count($_POST['choices']);

require("config.casa.php"); //file connection db


try {
$dbh = new PDO("mysql:host=$DB_Server;dbname=$DB_DBName",$DB_Username,$DB_Password);

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line
echo 'Connected to Database<br/>';

for($i=0; $i<$result; $i++){
$po="SELECT name, item, price, images FROM my-tb WHERE item ='".$_POST['choices'][$i]."'";
$rpo=$dbh->prepare($po);
$rpo->execute();
$pol = $rpo->fetch(PDO::FETCH_ASSOC);
echo "<ul class=\"tab\"><li class=\"col1\">"."name"."</li>";
echo "<li class=\"col2\"><p class=\"two\"><h3>&euro; ".$pol['price']."</h3></p>";
echo "<p class=\"lin\"><strong><span class=\"up\">".$pol['images']."</strong></p>";
<li class=\"col3\">".$row["item"]."</li></ul>
}
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}

我也尝试在循环外执行语句 fecth for 但我从变量 $_POST['choices'] 中得到最后一项而不是所有项。

最佳答案

在这里您应该做的是使用IN CLAUSE。将 $_POST[] 转换为逗号分隔的字符串。

$choices = implode(', ', $_POST['choices']);

SELECT name, item, price, images FROM `my-tb` WHERE item IN ($choices)

这将产生如下查询:

SELECT name, item, price, images FROM `my-tb` WHERE item IN (a,b,d)

这也将使您不会遍历 $_POST 并不必要地执行多个查询。

旁注

我不确定你的实际表是否命名为 my-tb 但如果你的表名中有 hyphens 你必须使用 backticks 封装字符串名称。

关于php - sql选择匹配数组的元素并显示在一行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35416687/

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