嗨,我一直收到这个错误,它加载了一个页面,非常简单,我不知道它是什么,我知道它说了,但我被难住了,任何帮助都将不胜感激。
您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,了解要使用的正确语法,请从第6行的‘'AND epg_ DESC’开始‘’ORDER BY epg_data.start DESC‘’开始
$query_Recordset1 = "SELECT streams.id, epg_data.lang, epg_data.start, epg_data.end, epg_data.description, streams_sys.stream_status, streams.stream_display_name, streams.stream_icon, epg_data.title AS epg_title
FROM ((streams_sys
LEFT JOIN streams ON streams.id=streams_sys.stream_id)
RIGHT JOIN epg_data ON epg_data.channel_id=streams.channel_id)
WHERE streams.id=".$_GET["id"]."
AND epg_data.start<NOW()
AND epg_data.end>'".$_GET["time"]."'
ORDER BY epg_data.start DESC";发布于 2017-10-18 05:56:06
我猜测您的$_GET["id"]没有值,并且您的SQL语句最终包含以下错误:
...WHERE streams.id= AND epg_data.start<NOW()...这当然是一个语法错误。
帮你自己一个大忙,停止在SQL查询中插入变量。它对于SQL注入来说是不安全的,更重要的是它太难了。
请改用查询参数:
$query_Recordset1 = "
SELECT streams.id, epg_data.lang, epg_data.start, epg_data.end,
epg_data.description, streams_sys.stream_status, streams.stream_display_name,
streams.stream_icon, epg_data.title AS epg_title
FROM ((streams_sys
LEFT JOIN streams ON streams.id=streams_sys.stream_id)
RIGHT JOIN epg_data ON epg_data.channel_id=streams.channel_id)
WHERE streams.id=?
AND epg_data.start<NOW()
AND epg_data.end>?
ORDER BY epg_data.start DESC";看见?这就容易多了。不再需要让自己的眼睛疲劳,怀疑你是否正确地关闭了内引号或外引号。只需使用?代替变量即可。不要试图在?周围加上引号。无论参数是数字、字符串还是日期,都无关紧要。
然后准备并执行:
$stmt = $pdo->prepare($query_Recordset1);
$stmt->execute([$_GET["id"], $_GET["time"]]);使用查询参数更容易、更安全。您将感谢自己切换到使用查询参数!
请注意,参数只能在通常使用常量值的地方使用。不能将参数用于表名、列名、SQL关键字或其他表达式。仅当您使用单个文字值时,如数字、带引号的字符串或带引号的日期。
https://stackoverflow.com/questions/46799780
复制相似问题