MySQL SQL Синтаксис Проблема

Я использую простейшее предложение SQL для получения идентификатора пользователя,

String query = "SELECT * FROM `login` WHERE `user_id` LIKE `userid` "; 

здесь user_id - это столбец, userid - это входная переменная, а не NULL,

при отладке система всегда сообщает о следующих ошибках,

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'userid' in 'where clause'

Я могу напечатать идентификатор пользователя как Аллан, идентификатор пользователя - это тип String, а текущее значение - "Allan". Почему система не может сравнить столбец и входную переменную?

Заранее большое спасибо!

Розмари

3 ответа

Вы должны поместить свое строковое значение в кавычки, а не в галочки. Помещая его в тики, вы говорите MySQL, что это идентификатор столбца, а не строковое значение, как вы хотите

String query = "SELECT * FROM `login` WHERE `user_id` LIKE 'userid' "; 

Ответ Джона Конде уже исправляет ошибку, но у меня есть небольшое замечание.

Похоже, вы хотите выбрать всю информацию для входа в систему от пользователей с идентификатором user_id, который совпадает с переменной userid в вашем коде Java. Для этого вы можете использовать:

String userid = "Rosemary";
String query = "SELECT * FROM `login` WHERE `user_id` LIKE '" + userid + "' ";

Фактический запрос тогда становится:

SELECT * FROM `login` WHERE `user_id` LIKE 'Rosemary'

Для входной переменной используйте '', а не ``. Я считаю, что SQL интерпретирует их как часть системы, а не как цитаты.

Другие вопросы по тегам