SQL查询中的变量不起作用?

时间:2011-04-16 01:08:22

标签: php sql variables

    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_on”,返回时间,我也尝试将其包装在“'和”中,但最终完全破坏了它;为了将来参考,我想知道为什么该变量没有传递给查询。这可能是非常简单的事情,我会觉得很傻,但是我会非常感激帮助。

感谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

在我看来,你编写它的方式,它是使用$ posted作为传递给date_format的值。你真正想要的是$ posted的内容,所以你需要关闭它周围的引号并将值连接到$ q字符串。