选择语句PDO错误SQLSTATE [42000]:语法错误或访问冲突:1064

时间:2013-05-13 06:14:50

标签: php mysql pdo

$orderby = 'title';
$order = 'ASC';

$stmt = $conn->prepare('SELECT f.id, title, description, release_year, first_name, last_name FROM film AS f, film_actor AS fa JOIN actor AS a WHERE fa.actor_id = a.actor_id AND fa.film_id = f.film_id ORDER BY :orderby :order LIMIT :limit');
$stmt->execute(
    array(  'order'=>$order, 
            'orderby'=>$orderby, 
            'limit'=>$limit
        )
    );

尝试运行此查询时,我收到标题中描述的错误。我试图找到一种方法来调试输出但失败了。我会感谢你的帮助。 PS:我在PHP中使用PDO学习SQL。

提前致谢。

2 个答案:

答案 0 :(得分:1)

你忘记了:

array(  'order'=>$order, 
        'orderby'=>$orderby, 
        'limit'=>$limit
    )

应该是

array(  ':order'=>$order, 
        ':orderby'=>$orderby, 
        ':limit'=>$limit
    )

答案 1 :(得分:0)

似乎$ stmt-> execute()会在$ limit值附近添加引号,因此200将是' 200'导致错误。

建议的解决方案是使用bindParam() 点击此处查看更多信息http://php.net/manual/en/pdostatement.execute.php