1

sqliteviewer を使用して実行すると:

SELECT * FROM areas WHERE x1 <= 1 AND x2 >= 1 AND z1 <= 1 AND z2 >= 1

正しい結果が得られますが、このphpコードでは結果が得られません:

$x = 1;
$z = 1;
$sql = $this->database->prepare("SELECT * FROM areas WHERE x1 <= :x AND x2 >= :x AND z1 <= :z AND z2 >= :z");
$sql->bindValue(':x', $x, SQLITE3_INTEGER);
$sql->bindValue(':z', $z, SQLITE3_INTEGER);
$result = $sql->execute();

このコードの何が問題なのか誰か知っていますか?

編集: クエリで動作します:

$result = $this->database->query("SELECT * FROM areas WHERE x1 <= ".$x." AND x2 >= ".$x." AND z1 <= ".$z." AND z2 >= ".$z);
4

1 に答える 1

1

query メソッドとは異なり、$result->fetchArray()実際に結果を取得するには使用する必要があります。$sql->execute()クエリが成功したかどうかのブール値のみを返します。

したがって、コードは次のようになります。

$x = 1;
$z = 1;
$sql = $this->database->prepare("SELECT * FROM areas WHERE x1 <= :x AND x2 >= :x AND z1 <= :z AND z2 >= :z");
$sql->bindValue(':x', $x, SQLITE3_INTEGER);
$sql->bindValue(':z', $z, SQLITE3_INTEGER);
$boolean = $sql->execute();
$result = $sql->fetchArray();//This line is important.
于 2013-10-18T23:14:49.880 に答える