2015-04-23 2 views
0
$account = "proot"; 

     $sql_check_account = mysqli_query($connect, "SELECT username FROM proot_accounts WHERE username = $account"); 

    if(!$sql_check_account) 
      die(mysqli_error($connect)); 

Возврат:PHP/SQL, просто выбрать, где получить "значение" в столбце

Неизвестный столбец 'proot' в 'где предложение'

То же самое с:

$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); 

Что может сделать переменная $ accou nt выполнять как столбец? У меня здесь не проблема ...

Спасибо!

+0

Попробуйте включить proot_accounts в backticks ie "' " – dbinns66

+3

Ваш второй пример должен работать. – Sean

+0

Привет, спасибо за ваше время, такая же ошибка с backticks, а второй пример не будет работать :( –

ответ

3

Вам нужно поставить кавычки вокруг него.

mysqli_query($connect, "SELECT username FROM proot_accounts WHERE username = '$account'"); 

Вы также должны изучить подготовленные операторы SQL в PHP. Они сэкономит много этих головных болей.

+1

Как это отличается от второго примера OPs? – Sean

+0

Привет, спасибо, но не работает –

+0

Это отличается тем, что он генерирует SQL с кавычками в нем. Вы хотите «username =» значение «', а не 'username = value' –

2

Я думаю, что это котировочная проблема. Это:

"SELECT username FROM proot_accounts WHERE username = $account" 

получит вам эту строку:

ВЫБЕРИТЕ имя ОТ proot_accounts ГДЕ имя пользователя = proot

В этом случае MySQL думает proot является имя столбца, поскольку proot является а не в кавычках вообще.

Это:

'SELECT username FROM proot_accounts WHERE username = "'.$account.'"' 

получит вам эту строку:

ВЫБЕРИТЕ имя ОТ proot_accounts ГДЕ имя пользователя = "proot"

В этом случае MySQL может по-прежнему думают, что " proot "- это имя столбца, в зависимости от режима SQL. Поскольку вы все еще получаете ту же ошибку при использовании этого кода, похоже, что ваша база данных установлена ​​в ANSI_QUOTES. В этом режиме текст внутри кавычек будет интерпретироваться как идентификатор столбца, а не буквальное значение.

Используя это:

"SELECT username FROM proot_accounts WHERE username = '$account'" 

получит вам эту строку:

ВЫБЕРИТЕ имя ОТ proot_accounts ГДЕ имя пользователя = 'proot'

Использование ' вместо " следует обеспечить, чтобы MySQL будет обрабатывать proot как буквенное значение, а не идентификатор столбца s режима SQL.

+0

Голосовать, это было ... спасибо! –

Смежные вопросы