2016-06-08 31 views
1

我試圖執行查詢,在我使用MySQL的功能,做這樣的事情:PHP編寫的語句在MySQL功能與整數不串

SELECT * FROM table WHERE something IN(1,2,3) 

,所以我會選擇一切有「東西」分別設置爲1,2或3。

當我在DB上直接執行查詢時,所做的查詢完美無缺,但是我的問題是,只要將它作爲準備語句傳遞給PHP,它就會將我的IN值轉換爲字符串,而不是int,因此它變成:

SELECT * FROM table WHERE something IN("1,2,3") 

注意IN中的「」。這不會返回任何內容,因爲列「something」存儲爲int值,而不是字符串。此外,我認爲它搜索1大字符串。

下面是一個簡單的例子,類似我的使用情況:

$values = "1,2,3"; // These needs to be converted to ints, so it reads 1,2,3 
if ($stmt = $connection->prepare('SELECT * FROM table WHERE something IN(?)')) { 
    $stmt->bind_param("s", $values); 
} 
+2

的可能的複製[我有一個整數數組,我如何在MySQL查詢中使用每一個(在PHP中)?](http://stackoverflow.com/questions/330268/i-have-an-array-of-integers-how-do-i -use-每個酮在-A-MySQL的查詢功能於PHP) –

回答

0

你將不得不使用FIND_IN_SET代替,就像這樣:

$values = "1,2,3"; // These needs to be converted to ints, so it reads 1,2,3 
if ($stmt = $connection->prepare('SELECT * FROM `table` WHERE FIND_IN_SET(`something`, ?)) { 
    $stmt->bind_param("s", $values); 
}