Php 使用PDO检索存储在数据库中的数组
我有一个数组:Php 使用PDO检索存储在数据库中的数组,php,mysql,pdo,Php,Mysql,Pdo,我有一个数组:productid=[1,2]。现在我想使用这部分代码从product表中获取数据: $sql = 'SELECT name FROM product WHERE id=:id'; $s = $pdo->prepare($sql); foreach($productid as $id) { $s->bindValue(':id', $id); $s->execute(); } 当我返回以下姓名时: foreach($s as $row) { $nam
productid=[1,2]
。现在我想使用这部分代码从product表中获取数据:
$sql = 'SELECT name FROM product WHERE id=:id';
$s = $pdo->prepare($sql);
foreach($productid as $id)
{
$s->bindValue(':id', $id);
$s->execute();
}
当我返回以下姓名时:
foreach($s as $row)
{
$name[] = array(
'name' => $row['name']
);
}
我只得到了第二个id的产品名称,但没有得到两个名称。
有什么问题吗
我只得到了第二个id的产品名称,但没有得到两个名称。有什么问题吗
你必须把你的$name[]=$row['name']代码>(是的,这是正确的表示法)foreach循环内部的代码,以及实际获取数据的代码
您还可以在()中形成一个IN
语句,该语句应该类似于IN(?,,,?)
,并在一个查询中运行它。类似于此(未经测试):
尝试使用IN()语句<代码>其中id位于(:id)
/编辑:我认为PDO不支持绑定数组作为参数。您可能必须创建一个以逗号分隔的ID字符串并绑定该字符串。@DanielM它不会起作用,因为标题似乎与问题正文相矛盾。您的表中似乎没有存储数组。
$in = trim(str_repeat('?,',count($productid)).",");
$sql = "SELECT name FROM product WHERE id IN ($id)";
$stmt = $db->prepare($sql);
$stmt->execute($productid);
$name = $stmt->fetchAll();