2016-05-25 5 views
0

Здесь $user_id холост цитировали:как они возвращают тот же результат?

$select = $conn->query("SELECT firstname,lastname FROM users WHERE user_id = '$user_id'"); 
$row = $select->fetch_assoc(); 
    print_r($row); 

Здесь $user_id не одинарные кавычки

$select = $conn->query("SELECT firstname,lastname FROM users WHERE user_id = $user_id"); 
$row = $select->fetch_assoc(); 
    print_r($row); 

If $user_id = 1, делает '1' == 1 ?? Оба возвращают ассоциативный массив $user_id = 1.

+2

потому что MySQL прощает, когда речь заходит о цитируемых целых числах. Если бы эта переменная была строкой, это была бы другая история. Это «короткий ответ» *. Итак, теперь вы знаете. –

+0

* Wait for it ... * –

+0

... dary! (о, подождите, это от чего-то другого). – Mike

ответ

0

Для вашего случая использования, да, '1' == 1.

From the docs:

Чтобы привести строку в числовое значение в числовом контексте, вы обычно не должны делать ничего кроме как использовать строковое значение, как если бы это был номер:

mysql> SELECT 1+'1'; 
     -> 2 
Смежные вопросы