【问题标题】:PHP bindParam variable errorPHP bindParam 变量错误
【发布时间】:2016-10-10 19:19:47
【问题描述】:

在我的网络服务中,bindParams 有问题。这是我的代码:

$stmt = $this->db->prepare("SELECT data FROM sless WHERE ST_CONTAINS(data.area, Point(:query))");
$stmt->bindParam(':query', $queryText, PDO::PARAM_STR);

但是:query 变量没有正确适配这段代码。

当我回显$queryText 时,它完美地给出了29.029087,40.990361。但在代码中它不起作用。顺便说一句,当我写29.029087,40.990361 纬度和经度而不是变量:query 时,我的代码运行良好。代码如下:

$stmt = $this->db->prepare("SELECT data FROM sless WHERE ST_CONTAINS(data.area, Point(29.029087,40.990361))");

我该如何解决这个问题?

【问题讨论】:

  • 分别尝试两个坐标Point(:lat,:lng)
  • bindValue() ...
  • @KyleThomas 没有任何改变
  • @Musa 是的,我认为逗号会给出此错误。但我是网络服务的新手。我无法处理 2 个变量。这是错误解决方案吗?
  • 只需将查询拆分为 lat 和 lng list($lat, $lng) = split(',', $queryText);

标签: php web-services pdo bindparam


【解决方案1】:

分别尝试两个坐标

list($lat, $lng) = split(',', $queryText);
$stmt = $this->db->prepare("SELECT data FROM sless WHERE ST_CONTAINS(data.area, Point(:lat,:lng))");
$stmt->bindParam(':lat', $lat, PDO::PARAM_STR);
$stmt->bindParam(':lng', $lng, PDO::PARAM_STR);

【讨论】:

    【解决方案2】:

    可能是因为函数 Point() 需要两个像这样的数字参数:

    点(1, 2)

    你只给了一个这样的字符串参数:

    点("1, 2")

    http://dev.mysql.com/doc/refman/5.7/en/gis-class-point.html

    【讨论】:

      猜你喜欢
      • 2012-02-04
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-13
      • 2013-09-17
      • 1970-01-01
      相关资源
      最近更新 更多