简体   繁体   English

SELECT查询中的MySQL语法错误

[英]MySQL syntax error in SELECT query

Hi everyone 嗨,大家好

I'm getting this syntax problem and I don't see anything wrong with my query. 我遇到此语法问题,但查询没有发现任何问题。
I'm kind of new at SQL as I'm still an undergrad. 我对SQL还是很陌生的,因为我还是一个本科生。 I'd really appreciate it if you could help me with this. 如果您能帮助我,我将非常感激。

This is the code: 这是代码:

$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';
}

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

I tested this code in a blank page and it works however when I integrate it inside the calendar page it doesn't work. 我在空白页中测试了此代码,但是它可以工作,但是当我将其集成到日历页面中时,它不起作用。 Any suggestions? 有什么建议么?
I have tested $userid, $year, $month and $day and all returns a value. 我已经测试了$ userid,$ year,$ month$ day,并且都返回了一个值。

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

You should escape your data and DB fields. 您应该转义数据和数据库字段。

You'll find it useful when starting out to create a variable containing your sql statement. 开始创建包含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 ) ;`

This affords you the ability to 这使您能够

echo $sql ; 

onto the page, where you can 到页面上,您可以

  • take a close look at it 仔细看看
  • paste the statement directly into you sql manager. 将语句直接粘贴到您的sql管理器中。

Not saying this is answering your question, but providing you with a strategy to divide and conquer PHP and SQL errors - especially common quoting errors. 并不是说这是在回答您的问题,而是为您提供了一种解决和解决PHP和SQL错误(尤其是常见的引用错误)的策略。

Jolly useful as a sanity check that there actually is corresponding data in your database in the case of zero results. 快活度非常有用,可以在结果为零的情况下检查数据库中是否确实存在相应的数据。

Make sure that the $userid variable contains something. 确保$ userid变量包含某些内容。 If it's an empty string you'll end up with 如果是空字符串,您将得到

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

And this will throw an error. 这将引发错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM