MySQL查询错误SQL语法PDO

问题描述:

这是MySQL的代码我尝试运行:MySQL查询错误SQL语法PDO

SELECT i.id, i.courseid, i.title, i.info, i.lasteditedby, u.id, u.forename, u.surname 
FROM courseinformation as i JOIN users AS u ON (i.lasteditedby = u.id) 
WHERE i.courseid = :courseid 
ORDER BY i.id desc LIMIT 2; 

即时得到这个错误:

/* SQL Error (1064): 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 ':courseid ORDER BY i.id desc LIMIT 2' at line 1 */ 

我的目标是获得ID,courseid,标题,信息,从CourseInformation表中继承,然后从用户表中获取Id,forename和surname。用户标识与lastededby相同。

我还真看不出来,因为我已经使用

:courseid 
其他PDO SQL querys

是香港专业教育学院运行


参考什么SQL语法错了,这是我的PHP代码与该SQL在

 $courseid = 'G11111'; 
     $sql = "SELECT i.id, i.courseid, i.title, i.info, i.lasteditedby, u.id, u.forename, u.surname FROM courseinformation as i JOIN users AS u ON (i.lasteditedby = u.id) WHERE i.courseid = :courseid ORDER BY i.id desc LIMIT 2"; 
     $sql->bindParam(":courseid", $courseid); 
        $sql->execute(); 

     foreach ($db->query($sql) as $row) { 
      echo '<div class="announceTitle">'; 
      echo $row['title'].'<br />'; 
      echo $row['forename'].' '.$row['surname'].'<br />'; 
      echo '</div> 
       <div class="announceText">'; 
      echo $row['info']; 
      echo '</div> 
       <br /> 
       <br />'; 
     } 

任何人都可以请指出我的方向,以什么是错的? 感谢您的阅读

+2

我不明白..'$ sql'是一个字符串,所以调用'bindParam'就应该给一个致命的PHP错误 – 2013-03-05 20:44:22

您还没有创建语句句柄,您已经创建了一个字符串。

tutorial建议如下:

$sth = $db->prepare("SELECT i.id, i.courseid, i.title, i.info, i.lasteditedby, u.id, u.forename, u.surname FROM courseinformation as i JOIN users AS u ON (i.lasteditedby = u.id) WHERE i.courseid = :courseid ORDER BY i.id desc LIMIT 2"); 
$sth->bindParam(":courseid", $courseid); 

以后你$db->query执行这个字符串就是错误的结果哪里,是你可能需要更好的例子从工作的标志,因为这似乎是一个几矛盾的技术被同时应用。

+0

谢谢你这么多!并感谢该教程:) – user1842842 2013-03-05 21:12:39