SELECT查询中的MySQL语法错误

时间:2010-08-19 08:00:46

标签: php mysql sql calendar

大家好

我遇到了这个语法问题,我的查询没有看到任何问题 我是SQL的新手,因为我还是本科生。如果你能帮助我,我真的很感激。

这是代码:

$results = mysql_query("SELECT event.nameevent,event.eventid
    FROM event,sub
    WHERE sub.userid=$userid AND event.eventid=sub.orgid AND 
    EXTRACT(YEAR FROM startdate)=$year AND EXTRACT(MONTH FROM startdate)=$month
    AND EXTRACT(DAY FROM startdate)=$list_day") 
or die(mysql_error());

if(mysql_num_rows($results) >0 )
{
    while($row=mysql_fetch_assoc($results))
    {
        $nameevent = $row['nameevent'];
        $eventid   = $row['eventid'];
        $calendar.="<a href='memberview.php?eventid=$eventid'>".$nameevent."</a>";
        $calendar.= "<br>";
    }
}
else
{
    $calendar.='you have no events today';
}

它返回此错误:

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 event.eventid=sub.orgid AND
EXTRACT(YEAR FROM startdate)=2010 AND EXTRACT( at line 3

我在一个空白页面中测试了这段代码,然而当我将它集成到日历页面中时,它无法正常工作。有什么建议吗? 我测试了 $ userid,$ year,$ month $ day ,并且都返回了值。

3 个答案:

答案 0 :(得分:3)

mysql_query("
SELECT `event.nameevent`, `event.eventid` 
FROM `event`,`sub` 
WHERE `sub.userid`='" . $userid . "'
AND `event.eventid`=`sub.orgid` 
AND EXTRACT(YEAR FROM `startdate`)='" . $year . "' 
AND EXTRACT(MONTH FROM `startdate`)='" . $month . "' 
AND EXTRACT(DAY FROM `startdate`)='" . $list_day . "'
");

您应该转义数据和数据库字段。

答案 1 :(得分:0)

在开始创建包含sql语句的变量时,您会发现它很有用。

$sql = "SELECT event.nameevent,event.eventid
   FROM event,sub
    WHERE sub.userid=$userid AND event.eventid=sub.orgid AND 
    EXTRACT(YEAR FROM startdate)=$year AND EXTRACT(MONTH FROM startdate)=$month
    AND EXTRACT(DAY FROM startdate)=$list_day" ; 
$results = mysql_query( $sql ) ;`

这为你提供了

的能力
echo $sql ; 

到页面上,你可以

  • 仔细看看它
  • 将语句直接粘贴到您的sql manager。

不是说这是回答你的问题,而是为你提供一个分解和克服PHP和SQL错误的策略 - 特别是常见的引用错误。

作为一个完整性检查,Jolly很有用,在结果为零的情况下,数据库中确实存在相应的数据。

答案 2 :(得分:0)

确保$ userid变量包含某些内容。如果它是一个空字符串,你最终会得到

SELECT event.nameevent,event.eventid
FROM event,sub
WHERE sub.userid= AND

这会引发错误。