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();