Это действительно странно.
Очевидно, что этот запрос работает:
$query = mysql_query("SELECT * FROM restaurant_page WHERE title LIKE '%$search_title%'");
Но это не значит:
$category = 'restaurant_page'; $query = mysql_query("SELECT * FROM '$category' WHERE title LIKE '%$search_title%'");
Со вторым запросом я получаю логическую ошибку ресурса.
$category
– таблица, которую пользователь хочет выполнить. Когда я распечатываю запрос с переменной, это то же самое, что и первое. Почему бы не работать?
Не используйте одинарные кавычки вокруг имени вашей таблицы, вместо этого используйте backticks ( `
):
$query = mysql_query("SELECT * FROM `$category` WHERE title LIKE '%$search_title%'");
NB. Пожалуйста, убедитесь, что $category
и $search_title
не являются $search_title
пользователями.
Создает ли запрос, созданный с помощью переменной, кавычки из-за имени таблицы? Мне это кажется ошибкой.
в запросе mysql не ставьте кавычки вокруг категории $.
$query = mysql_query("SELECT * FROM $category WHERE title LIKE '%$search_title%'");
Удалите одинарные кавычки из '$category'
.
"SELECT * FROM '$category' WHERE title LIKE '%$search_title%'" ---------------^^^^^^^^^^^^
Если необходимо, окружите $category
обратными окнами. Это необходимо, только если $category
содержит зарезервированное ключевое слово MySQL. Однако, поскольку это переменная, которая может стать возможной.
$query = mysql_query("SELECT * FROM `$category` WHERE title LIKE '%$search_title%'");
Конечно, не забудьте выйти из $category
так как это может быть пользовательский ввод. Мы предполагаем, что вы уже сделали это для $search_title
.
$category = mysql_real_escape_string($category);
Почему у вас есть котировки вокруг категории $ – удалите их, и они должны работать.
Вы всегда должны отделять переменные от фактической строки. Сделайте что-то вроде этого:
$category = "restaurant_page"; $query = mysql_query("SELECT * FROM `".$category."` WHERE title LIKE '%".$search_title."%'");
ЛОЛ. Это делает мой день. удалите цитату из категории $. Я уверен, что это просто смешная ошибка. Все мы ошиблись. хе-хе
Чтобы решить это изменение, «to»
$query = mysql_query("SELECT * FROM ".$category." WHERE title LIKE '%$search_title%'");