2012-07-29 177 views
0

我只是用PDO涉足的第一次,我不断收到,我真的想不通错误,导致该问题的代码如下:令人沮丧的PDO错误?

  <?php 
       try { 
        // Querying the database 
        $STH = $DBH->query("SELECT 'Group' from 'GroupTable'"); 
        // Setting the fetch mode 
        $STH->setFetchMode(PDO::FETCH_ASSOC); 

        while($row = $STH->fetch()) { 
         echo '<option value="',$row['Group'],'">',$row['Group'],'</option>'; 
        } 
       } 
       catch(PDOException $e) { 
        echo "Error connecting to Database"; 
        file_put_contents('logs/logsDB.txt', $e->getMessage(), FILE_APPEND); 
       } 
      ?> 

我不断收到相同错误,即:

SQLSTATE[42000]: Syntax error or access violation: 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 ''GroupTable'' at line 1

我试过报价/ unquoting表/列名,不带引号的,当我得到这个错误:

SQLSTATE[42000]: Syntax error or access violation: 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 'Group FROM GroupTable' at line 1

我会检查和双通道ecked,该表被DEFINITELY称为GroupTable,并且该列肯定被称为Group。

对不起,如果这确实明显或nooby,我只是想惹这个局面,看看我能学到的基础知识,道歉,如果代码不符合标准等

回答

2

两个问题在这里:

  • GROUPis a reserved word in mySQL,所以它会只引用时使用。
  • 表和列名需要被引用使用反引号,而不是简单的报价:

    SELECT `Group` from `GroupTable` 
    
+0

谢谢!原来反引号是这里的问题,虽然我觉得奇怪的是他们决定在引号在其他语言中使用时反引号(这是我第一次不得不使用反引号) – Sean 2012-07-29 15:23:02

+1

@SeanDunwoody:使用引号代表**字符串**其中,tick用于表示**表和数据库名称**。 – 2012-07-29 15:25:32

+0

我的理解是,当这些事情习惯于我习惯的旧SQL查询时,我很奇怪,我不确定他们为什么决定从这个''切换到' – Sean 2012-07-29 15:26:49