Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO不绑定变量_Php_Mysql_Sql_Pdo - Fatal编程技术网

Php PDO不绑定变量

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)

下面的代码返回一个空数组。运行SQL查询时,它返回超过40行。我在这件事上已经坚持了一个多小时了,开始想把我的头发拔出来

我尝试过的一件事是手动连接上的get变量,然后查询成功。基于此,我认为问题在于装订

$_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);