MySQL搜索中的语法错误,看起来是正确的


Syntax error in MySQL search which appears correct

我有一个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方法指向这一页,详细信息在提交后显示在地址栏中

你需要引用你的值:

...WHERE `event` = '$_GET[$eventq]' AND `date` = '$_GET[$dateq]'...

请注意,在查询中使用未经过滤的用户数据是危险的。有关sql注入攻击和缓解信息,请参阅http://bobby-tables.com/。

$_GET[$dateq]为空/未定义,因此您的查询在错误消息告诉您的位置被打破。

AND `date` =   ORDER BY
             ^-- Your variable should bere here.

给你的数据加上引号?

$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[$eventq]$_GET[$dateq]

应该是

{$_GET['eventq']}{$_GET['dateq']} .

先转义它们!

我认为问题在于"date=$_Get[$dateq]",您可能必须将其转换为日期格式。在oracle中,您可以使用to_date()函数。不确定MySql中的等效函数

如果定义了$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 ());