2017-09-16 54 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; 
} 
}