【发布时间】:2014-11-02 02:00:09
【问题描述】:
我在我的代码中使用了这个查询,但它没有给出结果
$query = sprintf("SELECT s.day, s.hour, h.name hostName
FROM schedule s, host h
WHERE dag IN (SELECT day
FROM schedule
WHERE showId = %s
ORDER BY day, hour)
AND s.hostId = h.id,
AND s.showId = %s
ORDER BY day, hour",
mysqli_real_escape_string($con, $id),
mysqli_real_escape_string($con, $id));
我知道这是因为 s.hostId 可以为 NULL。
我找到了 IFNULL() 方法,并像这样使用它,但是没有用。
SELECT s.day, s.hour, IFNULL(h.name, "") hostname
有人可以帮帮我吗? :S
PS:我知道我可以使用只有 1 个 real_escape 的 sprintf(因为它是相同值的 2 倍),但是如果我将 %s 替换为 %1$s 就像我应该使用占位符一样,我会收到一个错误:S
所以如果有人可以帮助我,也欢迎你:-)
【问题讨论】:
-
试试
IS NULL而不是ISNULL-ISNULL()是微软和甲骨文。 -
对不起,我的意思是 IFNULL 而不是 ISNULL(已编辑)
-
你在
SELECT s.day, s.hour, h.name hostName-SELECT s.day, s.hour, h.name, hostName- 这个FROM schedule s, host h中是否漏掉了一个逗号,我不确定。不应该有点吗?FROM schedule.s, host.h似乎不对。 -
否 @Fred-ii- 我只选择 s.day、s.hour 和 h.name,但我喜欢使用 h.name 作为主机名,所以我没有为该主机名设置别名另一列是别名:-)
-
列的别名之间不只是一个空格:-)
标签: php sql mysqli mysql-real-escape-string ifnull