Php SQL查询中的变量不工作?

Php SQL查询中的变量不工作?,php,sql,variables,Php,Sql,Variables,我将查询中的$posted改为一个简单的“posted_on”,返回时间,我还尝试用“”和“”将其包装起来,但结果完全破坏了它;作为将来的参考,我想知道为什么这个变量没有传递到查询中。这可能是一件非常简单的事情,我会觉得很傻,但我会非常感激你的帮助 谢谢。在我看来,按照您编写的方式,它使用$POST作为传递到日期格式的值。您真正想要的是$posted的内容,因此需要在其周围加引号,并将该值连接到$q字符串中。NULL是isset()触发TRUE的有效值。使用unset($_SESSION['us

我将查询中的$posted改为一个简单的“posted_on”,返回时间,我还尝试用“”和“”将其包装起来,但结果完全破坏了它;作为将来的参考,我想知道为什么这个变量没有传递到查询中。这可能是一件非常简单的事情,我会觉得很傻,但我会非常感激你的帮助


谢谢。

在我看来,按照您编写的方式,它使用$POST作为传递到日期格式的值。您真正想要的是$posted的内容,因此需要在其周围加引号,并将该值连接到$q字符串中。

NULL是isset()触发TRUE的有效值。使用
unset($_SESSION['user_tz'])

您的语法看起来不错。您的错误可能存在于代码的其他地方。如果您将
$q=…
行替换为同一位置的
echo$posted
,会发生什么情况?我得到
CONVERT_TZ(p.posted_on,'UTC','')
,您是对的,我有
$\u会话['user_TZ']=''$posted=p.posted\u on
if
$\u SESSION['user\u tz']=NULL?查询字符串用双引号括起来,这意味着PHP将解析字符串中的任何变量。单引号需要连接。
    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";