大家好
我遇到了这个语法问题,我的查询没有看到任何问题 我是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 ,并且都返回了值。
答案 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 ;
到页面上,你可以
不是说这是回答你的问题,而是为你提供一个分解和克服PHP和SQL错误的策略 - 特别是常见的引用错误。
作为一个完整性检查,Jolly很有用,在结果为零的情况下,数据库中确实存在相应的数据。
答案 2 :(得分:0)
确保$ userid变量包含某些内容。如果它是一个空字符串,你最终会得到
SELECT event.nameevent,event.eventid
FROM event,sub
WHERE sub.userid= AND
这会引发错误。