2010-08-19 87 views
0

大家好SELECT查询中的MySQL语法错误

我得到这个语法问题,我没有看到我的查询有什么问题。
我是一个新的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,$年,$月$天和所有返回一个值。

+1

Pl删除你的答案,并添加它,像我这样做的评论!和更多关于格式化pl阅读http://stackoverflow.com/editing-help – 2010-08-19 08:05:24

回答

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 . "' 
"); 

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

+0

反向'事件,子'将打破任何查询......在需要的地方,反引号应该围绕每个单独的表/列名(例如“事件'',''sub''),而不是包含两个不同表名的单个反引号 – 2010-08-19 08:12:07

+0

对不起,这是一个错字。 – pltvs 2010-08-19 08:30:08

+0

然后修复其他错印? event.eventid ... – Konerak 2010-08-19 09:09:33

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经理。

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

作为一个健全检查,在零结果的情况下,实际上存在相应的数据库中的数据。

0

确保$ userid变量包含某些内容。如果这是一个空字符串,你会以

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

而这会引发错误。