2013-01-14 77 views
0

我有一個數組:productid = [1,2]。現在我想通過使用這部分代碼來獲取從產品表中的數據:使用PDO返回存儲在數據庫中的數組

$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的產品名稱和沒」不會得到兩個名字。 什麼問題?

+0

嘗試使用IN()語句。 'WHERE id IN(:id)'。 //編輯:我認爲PDO不支持綁定數組作爲參數。您可能必須創建一個逗號分隔的ID字符串並綁定該字符串。 –

+0

@DanielM它不會工作 –

+0

看起來像標題與問題主體矛盾。看起來你的表中沒有存儲數組。 –

回答

1

我剛拿到第二個id的產品名稱,並沒有得到兩個名字。有什麼問題?

你得把你的$name[] = $row['name'];(是的,這是正確的符號)代碼的foreach循環,以及代碼實際獲取數據的內部。

您也可以形成IN()語句,該語句應該看起來像IN (?,?,?,?)並在一個查詢中運行它。像這樣(未測試):

$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(); 
+0

對不起,但我找不到正確的答案 –