Php PDO不绑定变量
下面的代码返回一个空数组。运行SQL查询时,它返回超过40行。我在这件事上已经坚持了一个多小时了,开始想把我的头发拔出来 我尝试过的一件事是手动连接上的get变量,然后查询成功。基于此,我认为问题在于装订Php PDO不绑定变量,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,下面的代码返回一个空数组。运行SQL查询时,它返回超过40行。我在这件事上已经坚持了一个多小时了,开始想把我的头发拔出来 我尝试过的一件事是手动连接上的get变量,然后查询成功。基于此,我认为问题在于装订 $_GET['ne'] = '53.23514382039281 -1.4177794752807813'; $_GET['sw'] = '53.23265539538397 -1.4263625441284375'; <?php ini_set("display_errors",1)
$_GET['ne'] = '53.23514382039281 -1.4177794752807813';
$_GET['sw'] = '53.23265539538397 -1.4263625441284375';
<?php
ini_set("display_errors",1);
require_once('../../includes/database.php');
try {
$stmt = $conn->prepare("SELECT X(Coordinates) AS `latitude`, Y(Coordinates) AS `longitude`
FROM stop
WHERE MBRContains(
GeomFromText( 'LINESTRING(:ne,:sw)' ),
Coordinates)");
$stmt->bindParam('ne', $_GET['ne'], PDO::PARAM_STR, 255);
$stmt->bindParam('sw', $_GET['sw'], PDO::PARAM_STR, 255);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
echo $e->getMessage();
}
echo json_encode($results);
?>
$\u GET['ne']='53.23514382039281-1.4177794752807813';
$_GET['sw']='53.23265539538397-1.4263625441284375';
您必须执行该语句才能获得结果
$stmt->execute();查看更多信息
不能绑定引用字符串“LINESTRING(:ne,:sw)”中的参数。
如果你坚持使用绑定,那么试着这样做
GeomFromText( concat('LINESTRING(',:ne,',',:sw,')') )
顺便说一句,你应该得到这个错误
警告:PDOStatement::execute()[PDOStatement.execute]:SQLSTATE[HY093]:无效参数编号:绑定变量的数量与令牌的数量不匹配
添加这一行
error_reporting(E_ALL | E_STRICT);
之后
ini_set("display_errors",1);
仍返回空数组:{参数标识符。对于使用命名占位符的准备好的语句,这将是以下形式的参数名称:nameIt是可选的。不是强制性的。您在MySQL上尝试过相同的查询吗?它返回结果了吗?@ShankarDamodaran是的,查询工作得很好哇!它也是。但遗憾的是仍然返回空的array@jskidd3你是拉蒂图吗de和longtude作为字符串?在sqlNo中,它们是地理空间点,这就是为什么我在选择它们时使用X和Y函数。但是我知道查询没有问题,因为它执行并返回results@jskidd3latitude和Longtude是mysql中的INT数据类型?非常感谢!我只坚持使用绑定,因为这是最安全的方法使用PDO选择数据。
error_reporting(E_ALL | E_STRICT);
ini_set("display_errors",1);