【发布时间】:2016-04-11 17:12:08
【问题描述】:
我知道有数百个类似的问题,我已经尝试了所有方法,但没有一个对我真正有用。
我的 MariaDB 中有一个调用存储过程的函数。这是返回数组。
<?
class MyClass {
protected static $connection;
public function connect() {
// Try and connect to the database
if(!isset(self::$connection)) {
self::$connection = new mysqli(SERVERNAME,USERNAME,PASS,DBNAME);
}
// If connection was not successful, handle the error
if(self::$connection === false) {
// Handle error - notify administrator, log to a file, show an error screen, etc.
return false;
}
return self::$connection;
}
public function query($query) {
// Connect to the database
$connection = $this -> connect();
// Query the database
$result = $connection -> query($query);
return $result;
}
public function quote($value) {
$connection = $this -> connect();
return $connection -> real_escape_string($value);
}
public function CallStoredProc($query) {
// Connect to the database
$connection = $this -> connect();
// Query the database
$result = $connection -> query($query,MYSQLI_USE_RESULT); //,
if($result === false) {
return false;
}
while ($row = $result -> fetch_assoc()) {
$rows[] = $row;
}
$result->free();
return $rows;
}
function StoreProcessed($Name,$Price){
//escape
$Name = $this->quote($Name);
$Price= $this->quote($Price);
$SQL = "INSERT INTO Result (`Name`,`Price`) VALUES ('$Name','$Price');";
$result = $this->query($SQL);
}
//the function I am using for processing:
function Compare($ID) {
$query = "CALL MyProcedure($ID);";
$result =$this->CallStoredProc($query);
/*After the array is returned I am looping trough each element of array
and storing this in DB with another function. */
$Table = "<table>";
foreach ($result as $key=>$val)
{
$Name = $result[$key]["Name"];
$Price = $result[$key]["Price"];
$this->StoreProcessed($Name,$Price);
//This is where the Commands out of sync is returned
$Table = $Table. "<tr>
<td>$Name</td>
<td>$Price</td>
</tr>";
}
$Table = $Table. "</table>";
return $Table;
}
}
我的 php 文件如下所示:
<?
$auto = new MyClass();
$table = $auto->Compare(14);
echo $table;
?>
我正在使用MYSQLI_USE_RESULT,数组填充后,我也在使用mysqli_free_result。我还应该做什么?
非常感谢!
【问题讨论】:
-
@Daan ...理论上应该可以互换...
-
@deceze 大多数情况下是的,但是:mariadb.com/kb/en/mariadb/mariadb-vs-mysql-compatibility
-
你试过
MYSQL_STORE_RESULT吗? -
能否给出出错的代码?