未捕获的异常“PDOException”在PHP5.2上带有“SQLSTATE[42000],但在PHP5.4中没有

未捕获的异常“PDOException”在PHP5.2上带有“SQLSTATE[42000],但在PHP5.4中没有,php,php-5.4,php-5.2,Php,Php 5.4,Php 5.2,为什么下面的语法在PHP5.4中运行,而不是在PHP5.2中运行 $stmt = $this->pdo->prepare('SELECT *, COALESCE(( 6371 * acos( cos( radians(:lat_params) ) * cos( radians( tbl_restaurants_restaurants.lat ) ) * cos( radians( tbl_restaurant

为什么下面的语法在PHP5.4中运行,而不是在PHP5.2中运行

$stmt = $this->pdo->prepare('SELECT *, COALESCE(( 6371 * acos( cos( radians(:lat_params) ) *  
cos( radians( tbl_restaurants_restaurants.lat ) ) *                                    
cos( radians( tbl_restaurants_restaurants.lon ) - radians(:lon_params) ) + 
sin( radians(:lat_params1) ) * 
sin( radians( tbl_restaurants_restaurants.lat ) ) ) ), 0) AS 
distance FROM 
tbl_restaurants_restaurants WHERE tbl_restaurants_restaurants.is_deleted = 0 
ORDER BY distance ASC LIMIT 0, :max');

$stmt->execute( array('lat_params' => $lat, 'lon_params' => $lon, 'lat_params1' => $lat, 'max' => $max ));
    return $stmt;
我有一个错误,这应该是由于PHP5.2的兼容性。在PHP5.4中,此脚本正常工作

这就产生了同样的错误

致命错误:未捕获的异常“PDOException”带有消息 'SQLSTATE[42000]: 语法错误或访问冲突:1064您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以了解可在20附近使用的正确语法 在D:…\controllerest.php:56中的第10行 堆栈跟踪:0 D:…\ControllerRest.php56: PDOStatement->executeArray 1d:…\get_data.php42: ControllerRest->getRestaurantsNearbyResultsAtCount'-20.290190','-40.293366',20' 在第56行的D:…\ControllerRest.php中抛出2{main}

除了在PHP5.2上运行的脚本,还有其他选择吗

==更新==

shivanshu patel的回答确实有效!但现在该错误由以下SQL语句生成:

$stmt = $this->pdo->prepare("SELECT COALESCE(( 6371 * acos( cos( radians(:lat_params) ) * cos( radians( 'tbl_restaurants_restaurants'.'lat' ) ) * cos( radians( 'tbl_restaurants_restaurants'.'lon' ) - radians(:lon_params) ) + sin( radians(:lat_params1) ) * sin( radians( 'tbl_restaurants_restaurants'.'lat' ) ) ) ), 0) AS distance FROM 'tbl_restaurants_restaurants' ORDER BY distance DESC LIMIT 0, :default_to_find_distance");

$stmt->execute( array('lat_params' => $lat, 'lon_params' => $lon, 'lat_params1' => $lat, 'default_to_find_distance' => $default_to_find_distance) );

尝试用``覆盖列和表,并确保max为int

<?php
$stmt = $this->pdo->prepare('SELECT *, COALESCE(( 6371 * acos( cos( radians(:lat_params) ) *
cos( radians( `tbl_restaurants_restaurants`.`lat` ) ) *
cos( radians( `tbl_restaurants_restaurants`.`lon` ) - radians(:lon_params) ) +
sin( radians(:lat_params1) ) *
sin( radians( `tbl_restaurants_restaurants`.`lat` ) ) ) ), 0) AS
distance FROM
`tbl_restaurants_restaurants` WHERE `tbl_restaurants_restaurants`.`is_deleted` = 0
ORDER BY distance ASC LIMIT 0, :max');

$stmt->bindValue(':max', $max, PDO::PARAM_INT);
$stmt->execute( array('lat_params' => $lat, 'lon_params' => $lon, 'lat_params1' => $lat ));
return $stmt;
可能重复的