我的MySQL查询语法错误令我感到困惑。据我所知,这似乎是正确的工作方式,我确信我的表名和变量都是正确的。
所以这是我收到的错误;
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND `date` = ORDER BY 'scriptno' ASC' at line 3`
这里的代码似乎是问题[但据我所知,它不是......
$data = mysql_query("SELECT script FROM `tableoscripts` WHERE `event` = $_GET[$eventq] AND `date` = $_GET[$dateq] ORDER BY 'scriptno' ASC") or die ('Error: '.mysql_error ());
如果您想知道上一页是使用get方法前往此页面,并且提交后详细信息显示在地址栏中。
答案 0 :(得分:3)
您需要引用您的值:
...WHERE `event` = '$_GET[$eventq]' AND `date` = '$_GET[$dateq]'...
请注意,在查询中使用未过滤的用户数据是危险的。有关SQL注入攻击和缓解信息,请参阅http://bobby-tables.com/。
答案 1 :(得分:2)
$_GET[$dateq]
为空/未定义,因此您的查询会在错误消息告诉您的位置被破坏。
AND `date` = ORDER BY
^-- Your variable should bere here.
答案 2 :(得分:0)
在您的数据周围加上引号?
$data = mysql_query("
SELECT script
FROM `tableoscripts`
WHERE `event` = '$_GET[$eventq]'
AND `date` = '$_GET[$dateq]'
ORDER BY 'scriptno' ASC")
or die ('Error: '.mysql_error ());
答案 3 :(得分:0)
$_GET[$eventq]
和$_GET[$dateq]
可能应该是
{$_GET['eventq']}
和{$_GET['dateq']}
。
先逃避他们!
答案 4 :(得分:0)
我认为问题在于“date = $ _ Get [$ dateq]”您可能需要将其转换为日期格式。 在oracle中,您可以使用to_date()函数。不确定MySql中的等效函数。
答案 5 :(得分:0)
如果定义$ eventq和$ dateq而不是以下喊叫工作
$data = mysql_query("SELECT script FROM `tableoscripts`
WHERE `event` = '{$_GET[$eventq]}' AND `date` = '{$_GET[$dateq]'}
ORDER BY 'scriptno' ASC") or die ('Error: '.mysql_error ());