2017-04-14 63 views
0

我在與創建一個數組一份聲明中的問題,這是我的代碼:創建具有在第一個準備好的聲明和一個字符串

$strinanterior1 = implode(',',$greaterThan); 
$stmt11 = $mysqli->prepare("SELECT nombre FROM usuarios WHERE id IN (?)"); 
$stmt11->bind_param('i', $strinanterior1); 
$stmt11->execute(); 
$stmt11->store_result(); 
$stmt11->bind_result($nombresmayores); 
$arraynombresmayores = array(); 
$stmt11->store_result(); 
while($stmt11->fetch()){ 
    $arraynombresmayores[] = $nombresmayores; 
} 

變量$stringanterior1正確輸出我想設置的變量在我的查詢(2,4),但查詢只返回第一個變量(2)「卡洛斯」的查詢。

如果我手動把2,4其中的問號是查詢工作得很好,但是當我用變量綁定$stringanterior1它僅輸出的兩個記錄它應該返回一個。

+1

看到http://stackoverflow.com/a/16236455/2630032 –

回答

0

你必須爲每個值提供一個綁定參數。

// create a list of ? 
$params = implode(',', array_fill(0, count($greaterThan), '?')); 
$sql = 'SELECT nombre FROM usuarios WHERE id IN (' . $params . ')'; 
// prepare and bind the params 
$stmt11 = $mysqli->prepare($sql); 
foreach ($greaterThan as $value) { 
    $stmt11->bind_param('i', $value); 
} 
+0

答案是有道理的,但我試過的代碼,它不會返回我什麼,'$ params'是正確的,它返回我?,?而且這個foreach也很好,但是它不會給我任何東西@Philipp –