通过php调用SQL查询时遇到“允许的内存大小...字节耗尽”的问题。不管怎么说,我相信阵列创建者陷入了一个循环。
我的php:
<?php
function confirm_query($result_set) {
if (!$result_set) {
die("DB query fail: " . mysql_error());
}
}
$con = mysql_connect("mysql15.000webhost.com", "***_mw", "***");
if (!$con) {
die("DB connect fail: " . mysql_error());
}
$mySqlDB = "a9414387_build";
$dbSelect = mysql_select_db($mySqlDB, $con);
if (!$dbSelect) {
die("db select fail: " . mysql_error());
}
$sku = $_POST['serching'];
$query = "SELECT * FROM inventory1 WHERE id LIKE '{$sku}%'";
$result = mysql_query($query, $con);
$des = mysql_fetch_array($result);
$matches = mysql_num_rows($result);
$json = array();
if ($matches > 0) {
while($des) {
$bus = array(
'description' => $des['description'],
'price' => $des['price'],
'sku' => $des['id'],
'type' => $des['type'],
);
$jsonString = array_push($json, $bus);
}
echo json_encode($jsonString);
} else {
echo json_encode(NULL);
}
die();
?>
但是,如果我发表评论:
while($des) {
$bus = array(
'description' => $des['description'],
'price' => $des['price'],
'sku' => $des['id'],
'type' => $des['type'],
);
$jsonString = array_push($json, $bus);
}
并用$ des替换$ jasonString我得到类似的东西:
{"0":"4040284","id":"4040284","1":"F","active":"F","2":"T","defaults":"T","3":"aurora,superNova","model":"aurora,superNova","4":null,"defmodel":null,"5":"mboard","type":"mboard","6":"105","price":"105","7":"Intel H67 (1155) Motherboard","description":"Intel H67 (1155) Motherboard","8":"1155","socket":"1155","9":"Not available at this time.","infoDiv":"Not available at this time.","10":"IntelH67Socket1155Motherboard.jpg","image":"IntelH67Socket1155Motherboard.jpg"}
我不是要扩展内存大小,b / c一个小数组不应该这么大。
答案 0 :(得分:2)
$des = mysql_fetch_array($result);
$matches = mysql_num_rows($result);
$json = array();
if ($matches > 0) {
while($des) {
您需要在循环中重新分配$des
;否则,您将不断检查相同的数据库行。尝试这样的事情:
$matches = mysql_num_rows($result);
$json = array();
if ($matches > 0) {
while($des = mysql_fetch_array($result)) {
答案 1 :(得分:1)
$ des被设置为数组的下一个记录,然后你就可以了。这意味着它将始终为真,因为数组具有内容,这会导致无限循环,如您所想。 $des = mysql_fetch_array($result)
将不再被调用以继续下一个结果。
尝试删除第一个$des = mysql_fetch_array($result)
并将while($des)
替换为:
while($des = mysql_fetch_array($result))