#php #sql #variables
#php #sql #переменные
Вопрос:
if (isset($_SESSION['user_tz'])) {
$posted = "CONVERT_TZ(p.posted_on, 'UTC', '{$_SESSION['user_tz']}')";
} else {
$posted = 'p.posted_on';
}
// Run the query:
$q = "SELECT t.subject, p.message, username, DATE_FORMAT($posted, '%e-%b-%y %l:%i %p') AS posted FROM threads AS t LEFT JOIN posts AS p USING (thread_id) INNER JOIN users AS u ON p.user_id = u.user_id WHERE t.thread_id = $tid ORDER BY p.posted_on ASC";
Я изменил $ posted в запросе на простое «posted_on», которое возвращает время, я также попытался немного обернуть его в «и «», но в итоге это полностью нарушило его; для дальнейшего использования я хотел бы знать, почему эта переменная не передается в запрос. Вероятно, это что-то действительно простое, и я буду чувствовать себя глупо, но помощь была бы очень признательна.
Спасибо.
Комментарии:
1. Ваш синтаксис выглядит нормально. Вероятно, ваша ошибка существует в другом месте кода. Что произойдет, если вы замените
$q = ...
строку наecho $posted
в том же месте?2. Я получаю
CONVERT_TZ(p.posted_on, 'UTC', '')
, вы правы, что у меня было$_SESSION['user_tz'] = '';
для включенного файла, однако я установил для него значение NULL, а затем я получил ошибку неопределенной переменной, не будет ли набор if установлен$posted = p.posted_on
if$_SESSION['user_tz'] = NULL;
??
Ответ №1:
NULL — допустимое значение для isset() для запуска TRUE. Использовать unset($_SESSION['user_tz']);
Ответ №2:
Мне кажется, что в том, как вы это написали, используется $posted в качестве значения для передачи в date_format. Что вам действительно нужно, так это содержимое $posted, поэтому вам нужно заключить его в кавычки и объединить значение в строку $ q.
Комментарии:
1. Строка запроса заключена в двойные кавычки, что означает, что PHP проанализирует любые переменные внутри строки. Одинарные кавычки потребовали бы объединения.