2013-03-05 3 views
0

Это 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; 

Im получаю эту ошибку:

/* 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, название, информация, lasteditedby из таблицы CourseInformation, а затем Id, имя и фамилию из таблицы пользователя. Если идентификатор пользователя совпадает с длительным.

Я действительно не могу видеть, что SQL синтаксис не так, как я использовал

:courseid 
в другом PDO SQL querys

, что ив запустить


для справки, это мой 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 –

ответ

0

Вы не создали дескриптор инструкции, вы создали строку.

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

Смежные вопросы