16520


PDO で binValue を使ってもバインドされないバグが起きています．

binValue の後に errorinfo を挟んだ結果 "HY093" とでました．debugDumpParams
もしたのですが，バインドされていない文字列が結果として帰って来ました.

bindValue している変数は実数なので，調べた結果 PARAM_STR にしたのですが，PARAM_INT で試してもダメでした．

[code]

    $pdo = new PDO($dsn['host'], $dsn['user'], $dsn['pass'], $dsn['driver_options']);
    try {
      $pdo->exec('SET NAMES utf8');
      $sql =  "SELECT * FROM location WHERE MBRContains(GeomFromText('LineString(? ?, ? ?)'), latlng)";
      $select_loc = $pdo->prepare($sql);
      $select_loc->bindValue(1, $ne_lng, PDO::PARAM_STR);
      $select_loc->bindValue(2, $ne_lat, PDO::PARAM_STR);
      $select_loc->bindValue(3, $sw_lng, PDO::PARAM_STR);
      $select_loc->bindValue(4, $sw_lat, PDO::PARAM_STR);
      $select_loc->execute();
    
      $loc = $select_loc->fetch();
    
    } catch(PDOException $e) {
      $error = $e->getMessage();
    }
    
[/code]


CC BY-SA 3.0
2015-09-11T10:00:22.650
16518
2015-09-11T10:52:25.673
11142
question
php pdo
PDO で binValue を使ってもバインドされない．


`'LineString(? ?, ? ?)'`がただの文字列と扱われているのだと思います。

[code]

    CONCAT('LineString(', ?, ' ', ?, ', ', ?, ' ', ?, ')')
    
[/code]

のように結合するか、あるいはPHP側でパラメーターを埋め込めばいいのではないでしょうか。


CC BY-SA 3.0
2015-09-11T10:52:25.673
16520
2015-09-11T10:52:25.673
5750
16518
answer