$account = "proot"; $sql_check_account = mysqli_query($connect, "SELECT username FROM proot_accounts WHERE username = $account"); if(!$sql_check_account) die(mysqli_error($connect));
Вернуть :
Неизвестный столбец 'proot' в 'where clause'
То же самое:
$sql_check_account = mysqli_query($connect, 'SELECT username FROM proot_accounts WHERE username = "'.$account.'"');
Или
$sql_check_account = mysqli_query($connect, "SELECT username FROM proot_accounts WHERE username =".$account);
Что может сделать переменная $ account выполняться как столбец? У меня проблем нет здесь …
Благодаря !
Вам нужно поставить кавычки вокруг него.
mysqli_query($connect, "SELECT username FROM proot_accounts WHERE username = '$account'");
Вы также должны изучить подготовленные инструкции SQL в PHP. Они сэкономит много этих головных болей.
Я думаю, что это кавычка. Эта:
"SELECT username FROM proot_accounts WHERE username = $account"
вы получите эту строку:
SELECT username FROM proot_accounts WHERE username = proot
В этом случае MySQL думает, что proot – это имя столбца, потому что proot вообще не в кавычках.
Эта:
'SELECT username FROM proot_accounts WHERE username = "'.$account.'"'
вы получите эту строку:
SELECT username FROM proot_accounts WHERE username = "proot"
В этом случае MySQL может по-прежнему думать, что «proot» – это имя столбца, в зависимости от режима SQL. Поскольку вы все еще получаете ту же ошибку при использовании этого кода, похоже, что ваша база данных установлена в режим ANSI_QUOTES . В этом режиме текст внутри кавычек будет интерпретироваться как идентификатор столбца, а не буквальное значение.
Используя это:
"SELECT username FROM proot_accounts WHERE username = '$account'"
вы получите эту строку:
SELECT username FROM proot_accounts WHERE username = 'proot'
Использование '
вместо "
должно гарантировать, что MySQL будет обрабатывать proot
как литеральное значение вместо идентификатора столбца, независимо от режима SQL.