我正在尝试将我的一个旧代码重写为 mysqli,因为我收到 Allowed memory size exhausted 错误。我阅读了一些使用 mysqli_real_query 的提示,它将激活查询而不将所有记录加载到 RAM 中。
我的旧代码:
<?
$sql = "SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE p.status = 1";
$query = $this->db->query($sql);
$results = $query->rows;
foreach ($results as $result) {
print_r("$result");
/* Output:
Array
(
[product_id] => 17763
[feed_product_id] => 0
[import_id] => 0
[name] => Name
[model] => MODEL
[sku] => 390348
[upc] => 390348
...
)
*/
}
?>
到目前为止我的新代码:
<?
$db = mysqli_connect('localhost', 'username', 'pwd', 'db');
$sql = "SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE p.status = 1";
mysqli_real_query($db, $sql);
$result = mysqli_use_result($db);
while ($row = mysqli_fetch_row($result)) {
print("Test: " . $row);
/* Output:
(
[0] => 17763
[1] => 0
[2] => 0
[3] => Name
[4] => MODEL
[5] => 390348
[6] => 390348
*/
}
?>
如何在新代码中获得相同的结果?我的新数组键是 0、1、2、3... 而不是列名。