【问题标题】:Invalid query: You have an error in your SQL syntax; syntax to use near无效查询:您的 SQL 语法有错误;附近使用的语法
【发布时间】:2016-02-01 10:19:45
【问题描述】:

我有这个问题错误,我不知道如何解决它。我知道很多人有像我这样的问题,但我无法定位。

问题:

Invalid query: 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 'FROM `user` WHERE `id` = 0' at line 6

代码:

<?php
function fetch_users(){
$result = mysql_query('SELECT `id` AS `id`, `username` AS `username` FROM `user`');

$users = array();

while(($row = mysql_fetch_assoc($result)) !== false){
       $users[] = $row;
   }

   return $users;

}

// fetches profile information for the given user.
function fetch_user_info($id){
   $id = (int)$id;

   $sql = "SELECT 
               `username` AS `username`,
               `firstname` AS `firstname`,
               `lastname` AS `lastname`,
               `email` AS `email`,
             FROM `user` WHERE `id` = {$id}";

      $result = mysql_query($sql);
      if (!$result) {
   die('Invalid query: ' . mysql_error());
   }

      return mysql_fetch_assoc($result);
}


?>

【问题讨论】:

    标签: php mysql sql syntax executequery


    【解决方案1】:

    问题在于$sql 中 sql 查询的语法形成,因为错误本身表明错误在FROM user WHERE id=0 附近,select 查询中email 附近的附加comma , 会抛出 sql错误。

    <?php
    echo 'test';
    
    function fetch_users(){
        $result = mysql_query('SELECT `id` AS `id`, `username` AS `username` FROM `user`');
        $users = array();
        while(($row = mysql_fetch_assoc($result)) !== false){
            $users[] = $row;
        }
        return $users;
    }
    // fetches profile information for the given user.
    function fetch_user_info($id){
        $id = (int)$id;
        $sql = "SELECT 
    `username` AS `username`,
    `firstname` AS `firstname`,
    `lastname` AS `lastname`,
    `email` AS `email`
    FROM `user` WHERE `id` = {$id}";
        $result = mysql_query($sql);
        if (!$result) {
            die('Invalid query: ' . mysql_error());
        }
        return mysql_fetch_assoc($result);
    }
    echo fetch_users();
    
    ?>
    

    【讨论】:

      【解决方案2】:

      删除最后一列后的逗号:

      $sql = "SELECT 
                   `username` AS `username`,
                   `firstname` AS `firstname`,
                   `lastname` AS `lastname`,
                   `email` AS `email`              -- here
               FROM `user` WHERE `id` = {$id}";
      

      另外,您不需要与列同名:

      $sql = "SELECT 
                   `username`,
                   `firstname`,
                   `lastname`,
                   `email`  
               FROM `user` WHERE `id` = {$id}";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-15
        • 2016-02-15
        • 1970-01-01
        • 1970-01-01
        • 2016-02-16
        • 1970-01-01
        相关资源
        最近更新 更多