sql не возвращает результатов

Следующий код не возвращает результатов, где я использую переменную в коде $ 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);

0

Решение

Я уверен, что ваша ошибка связана с неверными цитатами.
В своем коде вы пишете

$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 может быть отправлена ​​через открытую форму, вы можете в конечном итоге получить дамп базы данных в лучшем случае.

3

Другие решения

Во второй строке запроса есть синтаксическая ошибка — если вы хотите, чтобы в запросе были одинарные кавычки, вам нужно заключить все это в двойные кавычки:

$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM ' .TOPIC_TABLE
. " WHERE dept_id='$dep' ORDER BY `sort`";

Между прочим, построение такого запроса с использованием конкатенации строк является ДЕЙСТВИТЕЛЬНО ПЛОХОЙ ИДЕЕЙ и оставляет вас открытыми для атак с использованием SQL-инъекций — вместо этого вы должны использовать подготовленные операторы и параметры.

0

Сначала, как говорит Фред -ii, убедитесь, что оператор if выполняется правильно. Тогда если dept_id это целочисленное значение, тогда вам не нужны одинарные кавычки, как говорит scaisEdge. В противном случае SQL выглядит нормально. Убедитесь, что в базе данных есть записи для dept_id это передается в.

0
По вопросам рекламы [email protected]