2017-09-16 66 views
-1

我使用一个数组中的一个SQL语句,它产生错误
Array对字符串的转换“文件和行号的名字。”
这是我的代码。SQL查询生产“数组字符串转换错误”

$temp=array(2,3,4,9); 
    for($i=4; $i>=0; $i--) { 

    $query1 = $mysqli->query("SELECT * FROM user WHERE u_id IN ('$temp')"); 
    if ($query1) { 
     echo '<br> hello'.$i; 
    } 
} 

我也试过这个

$query1 = $mysqli->query("SELECT * FROM user WHERE u_id IN ('$temp[$i]')"); 

而不是

$query1 = $mysqli->query("SELECT * FROM user WHERE u_id IN ('$temp')"); 

在上面的代码。

+0

这是你的出发点'('$ temp')' –

+2

这是因为'$ temp'是一个数组而不是字符串。 – Nima

+0

@Nima如何解决它然后 – pyrogrammer

回答

3

如果你想获得SELECT * FROM user WHERE u_id IN (2,3,4,9),然后投你的数组昏迷分隔字符串implode(',', $temp)

像调整你的代码:

$tmp = [2, 3, 4, 9]; 
$usersStr = implode(',', $tmp); 
... 
$query1 = $mysqli->query("SELECT * FROM user WHERE u_id IN ($usersStr)"); 
+0

不,它仍然不起作用 – pyrogrammer

+0

你应该显示实际的php代码,因为我确定操作符正在获取字符串插入语法错误 – Steve

+0

@pyrogrammer updated –

1

您运行在一个循环中查询。你传输数组,但必须是字符串。

$temp=array(2,3,4,9); 

// Convert to string 
$str = implode(',', $temp); 

for($i=4;$i>=0;$i--){ 

$query1=$mysqli->query("SELECT * FROM user WHERE u_id IN (".$str.")"); 

if($query1->num_rows){ 
    echo '<br> hello'.$i; 
} 
}