2016-03-16 20 views
1

我在我的數據庫id的1,2 3行3PDO的MySQL接受非特定值

我意識到,如果你創建了這樣一種說法:

$prepare=$database->prepare("select * from brand where id=?"); 
$prepare->execute($array); 
echo $prepare->rowCount(); 

它將給count數組值是不是確切的id,但使用;。例如

的數組值計算與使用值作品'row';

1 = 1 
2 = 1 
3 = 1 
4 = 0 
5 = 0 
1;2 = 1 
3;4 = 1 
4;2 = 0 

爲什麼喜歡1;2或與查詢3;4工作價值觀?

+1

因爲';'是一個有效的字符,並且語句結束,但仍然有效。 –

+0

......戈登在下面詳細解釋過。 –

回答

3

合理的問題。這與MySQL在數字上下文中將字符串隱式轉換爲數字的事實有關。它通過查看字符串中的前導數字並進行轉換來完成轉換。

因此,表達式:

where id = '1;2' 

被解釋爲:

where id = 1 

而且還有一場比賽。

這是一個表,其中id可能0特別邪惡,你必須:

where id = 'abc' 

該字符串被靜悄悄地轉換爲整數0 - 有可能是一個匹配。