使用我创建的数据库,我可以运行以JSON格式输出数据的搜索查询,然后将它们发送回我的网页。相当标准。针对PHP的JSON响应太大?
$searchQuery = "SELECT * FROM alldata where $searchBy like '%$searchValue%'" ;
$searchResult = mysqli_query($con, $searchQuery);
while ($row = mysqli_fetch_row($searchResult)) {
$item = array();
$item["dateReceived"] = convertDate($row[1]);
$item["quoteCost"] = $row[15];
$item["quoteNumber"] = $row[16];
$item["quoteExpDate"] = convertDate($row[17]);
$item["comments"] = $row[21];
$output[] = $item;
}
$out = array('aaData' => $output);
echo json_encode($out);
当我的查询太笼统了,某些东西失败了,我不确定它在哪里。
我从服务器得到的回应是:
Fatal error : Allowed memory size of 134217728 bytes exhausted (tried to allocate 14680165 bytes) in C:\xampp\htdocs\....php</b> on line <b>74</b><br />
我的内存限制在php.ini中设置为:
memory_limit=128M
如果我去到MySQL,写SELECT * FROM
ALLDATA WHERE name like "%a%";
我得到约35,000行,每行约20列,但只需要一秒钟。
我可以根据表查询的数量非常小 - 我能做些什么来解决这个问题,以便我的用户可以运行更通用的查询?
**警告**:当使用'mysqli'时,您应该使用参数化查询和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)来添加用户数据**不要**使用字符串插值来实现这一点,因为您将创建严重的[SQL注入漏洞](http://bobby-tables.com/)。**从不**将'$ _POST'数据直接进入一个查询 – tadman
如果你想要做这样的事情,128MB看起来真的很低,为什么不这样做呢,看看你是否能获得更多的数据?Mi ght也调查分页。 – tadman
第一件事是只返回所需的数据,所以在你的select中删除*并实际放入你正在处理的列名。 – geggleto