PHP Как проверить, существует ли строка в таблице MySQL

php
Вопрос: У меня есть пользователь, который вводит желаемое имя, а затем проверяйте базу данных, чтобы узнать, существует ли она до того, как я это сделаю. Это не работает должным образом, хотя, иногда это эхо правильно, иногда нет. $makeName = $_POST["userName"]; $nameFind = "SELECT userName FROM usertable WHERE userName = $makeName"; $nameCompare = mysqli_query($con, $nameFind); if($nameCompare

Вопрос:

У меня есть пользователь, который вводит желаемое имя, а затем проверяйте базу данных, чтобы узнать, существует ли она до того, как я это сделаю. Это не работает должным образом, хотя, иногда это эхо правильно, иногда нет.

$makeName = $_POST[«userName»]; $nameFind = «SELECT userName FROM usertable WHERE userName = $makeName»; $nameCompare = mysqli_query($con, $nameFind); if($nameCompare == false) { echo «This is a new name»; } else { echo «Pick a new name please»; } Лучший ответ:

Запрос не сбой только потому, что он не возвращает строк. Используйте mysqli_num_rows() чтобы узнать, было ли совпадение или нет.

Также xkcd
xkcd

Ответ №1

Не делай так.

Вместо,

  1. Создайте уникальное ограничение для столбца “имя пользователя”.
  2. Введите нужное имя пользователя.
  3. Ловушка ошибка, когда желаемое имя уже существует.

Зачем? Ваш подход всегда требует двух обращений к базе данных, и он не учитывает ошибки. И вам все равно придется ловить ошибки; есть много вещей, которые могут пойти не так с выражением вставки.

Ответ №2

Используйте кавычки и избегайте:

«select userName FROM usertable WHERE userName = ‘». mysqli_real_escape_string($makeName). «‘»

И затем используйте mysqli_num_rows()

$result = mysqli_query($query); $num_rows = mysqli_num_rows($result);

Ответ №3if(mysqli_num_rows($nameCompare)) { echo «Pick a new name please»; } else { echo «This is a new name»; }

это проверит результат, если есть строка, она уже используется.

Ответ №4

Вам нужны два запроса для этого в любом случае

$username = mysqli_real_escape_string($con,$username); $query = «SELECT * FROM tbl_login WHERE username=’$username'»; $result = mysqli_query($con,$query)or die(mysqli_error()); $num_row = mysqli_num_rows($result); $row=mysqli_fetch_array($result); if( $num_row ==1 ) { echo ‘false’; } else{ $query_insert = «INSERT INTO login (username, password)VALUES (‘$username’,’$password’);»; $result = mysqli_query($con,$query_insert) or die(mysqli_error()); }

Оцените статью
Добавить комментарий