0

我从 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 方法转到此页面,并且提交后详细信息会显示在地址栏中。

4

6 回答 6

3

您需要引用您的价值观:

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

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

于 2013-06-17T18:06:36.930 回答
2

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

AND `date` =   ORDER BY
             ^-- Your variable should bere here.
于 2013-06-17T18:06:12.460 回答
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 ());
于 2013-06-17T18:07:17.833 回答
0

$_GET[$eventq]$_GET[$dateq]

可能应该是

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

并先逃离他们两个!

于 2013-06-17T18:07:22.990 回答
0

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

于 2013-06-17T18:08:41.160 回答
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 ());
于 2013-06-17T18:15:20.520 回答