почему мой запрос получает записи, которые не совпадают в mysql [duplicate]

<?php
    $username = $_POST['username'];
    $password = $_POST['password'];
    $result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '".$username."'");

    while($row = mysql_fetch_array($result))
    {
        echo $row['FirstName'];
    }
?>

И если есть пользователь с уникальным именем пользователя, вы можете использовать для этого «=». Вам не нужно.

Ваш запрос будет выглядеть следующим образом:

mysql_query("SELECT * FROM Users WHERE UserName ='".$username."'");
2
задан potashin 5 November 2015 в 12:46
поделиться

2 ответа

Из MySQL docs:

Когда оператор используется с операндами разных типов, введите преобразование, чтобы сделать совместимые операнды

Документация

Итак, в основном, '12ABC' передается в 12.

3
ответ дан potashin 28 August 2018 в 11:45
поделиться

MySQL должен сделать преобразование, чтобы сделать сравнение betwen двух разных типов. Он пытается превратить строку в int и получить цифры из строки, начиная с начала.

У вас было, например,

'ABC12'

результат преобразования строки в int будет 0

1
ответ дан juergen d 28 August 2018 в 11:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: