2017-04-14 33 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 –