0

私は配列を持っています: productid = [1,2]. コードの次の部分を使用して、製品テーブルからデータをフェッチします。

$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']
  );
}

2 番目の ID の製品名を取得しただけで、両方の名前を取得できませんでした。どうしたの?

4

1 に答える 1

1

2番目のIDの製品名を取得したばかりで、両方の名前を取得できませんでした。どうしたの?

$name[] = $row['name'];foreachループ内に(そうです、正しい表記法の)コードと、実際にデータをフェッチするコードを配置する必要があります。

IN()次のようなステートメントを作成しIN (?,?,?,?)て、1つのクエリで実行することもできます。このようなもの(テストされていません):

$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();
于 2013-01-14T10:17:17.020 に答える