2013-10-18 22 views
1

當我使用一個sqliteviewer並運行:PHP sqlite3的 - 綁定值

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

回答

2

與查詢方法,你必須使用$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.