Следующий код не возвращает результатов, где я использую переменную в коде $ dep, если я вручную введу значение 1, то он вернет ожидаемый результат. Я пробовал это без кавычек одинарные кавычки и двойные кавычки. Я посмотрел множество примеров, и я не вижу, что я делаю неправильно
$dep = 1;
if (!$names) {
$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM '.TOPIC_TABLE
. ' WHERE dept_id='$dep' ORDER BY `sort`";
$res = db_query($sql);
Я уверен, что ваша ошибка связана с неверными цитатами.
В своем коде вы пишете
$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM '.TOPIC_TABLE
. ' WHERE dept_id='$dep' ORDER BY `sort`";
После FROM вы используете одинарные кавычки (‘), но весь ваш запрос был заключен в двойные кавычки («), что создает проблему.
Так должно быть:
$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM ".TOPIC_TABLE
. " WHERE dept_id='$dep' ORDER BY `sort`";
РЕДАКТИРОВАТЬ: забыл указать, что вы должны серьезно использовать PDO или любые другие методы предотвращения SQL-инъекций. Если при каких-либо обстоятельствах ваша переменная $ dep может быть отправлена через открытую форму, вы можете в конечном итоге получить дамп базы данных в лучшем случае.
Во второй строке запроса есть синтаксическая ошибка — если вы хотите, чтобы в запросе были одинарные кавычки, вам нужно заключить все это в двойные кавычки:
$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM ' .TOPIC_TABLE
. " WHERE dept_id='$dep' ORDER BY `sort`";
Между прочим, построение такого запроса с использованием конкатенации строк является ДЕЙСТВИТЕЛЬНО ПЛОХОЙ ИДЕЕЙ и оставляет вас открытыми для атак с использованием SQL-инъекций — вместо этого вы должны использовать подготовленные операторы и параметры.
Сначала, как говорит Фред -ii, убедитесь, что оператор if выполняется правильно. Тогда если dept_id
это целочисленное значение, тогда вам не нужны одинарные кавычки, как говорит scaisEdge. В противном случае SQL выглядит нормально. Убедитесь, что в базе данных есть записи для dept_id
это передается в.