我試圖循環使用MySQLi和綁定/獲取的一組結果。MySQLi綁定結果並獲取多行
static function getConnection()
{
if (!isset(self::$db_conn))
{
self::$db_conn = new mysqli(self::$DBSERVER,self::$DBUSER,self::$DBPASS, ModelBase::$DBNAME) or die(mysql_error(0)." Error handling database connection. ");
}
return self::$db_conn;
}
以上是getConnection()函數。它在這個類繼承的ModelBase類中。
$term = "%".$term."%";
$con = ModelBase::getConnection();
$sql = "SELECT name FROM cities WHERE name LIKE ? LIMIT ?";
$query = $con->prepare($sql) or die("Error preparing sql in City ".parent::$db_conn->error);
$query->bind_param("si", $term, $limit) or die("Error binding params in City ".parent::$db_conn->error);
$query->execute() or die("Error executing query in City");
$tmp = "";
$query->bind_result($tmp);
while($query->fetch());
{
error_log($tmp);
echo($tmp."\n");
}
$query->close();
但是,我得到的只是最後的結果,只有一次。應該有更多的結果,並且當我在phpMyAdmin中檢查以下查詢時,或者在提示時我會得到多行。
SELECT name FROM cities WHERE name LIKE %d% LIMIT 150
此問題不會出現,如果我改變
$查詢 - > bind_result($ TMP);
到
$查詢 - > bind_result(& $ TMP);
語法有什麼問題嗎?
有沒有更簡單的方法來做到這一點?也許一種獲取對象的方法?
@Josh_K我需要看看你的數據包封裝處理你的查詢。有很多事情可能會因你如何綁定/獲取結果而出錯。 – anomareh
這只是MySQLi,我用getConnection() –