我写PHP时有个编程习惯,索引数据库,直接用mysqli_fetch_all()来吧所有符合条件的数据全取出来,存到一个关联数组里,然后再用for循环处理。可能是数据库比较小,从没出过问题。然后我突发奇想,任何语言声明一个变量都是要为它分配内存的,像PHP的数组,可以预想到数据内存的数据越多,它就越占内存。那么如果我还用这个方法一次性取出全部符合条件的数据,把他们存成数组,那么某天数据库量级特别大的时候,一次性取出了上千万行的乃至更多的数据,会不会存在安全隐患?
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已结题
PHP的mysqli_fetch_all()函数会不会存在内存泄漏的风险
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除
- 收藏 举报
1条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
普通网友 2021-09-26 09:21关注按你的操作来看,性能存在的问题比你安全性的问题大;;;
另外,如果真的是有上千万的数据,那你问的内存泄漏也是有可能的,;
数据量上来了,出现的问题就会存在的。
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容
报告相同问题?
提交
- 2018-12-03 15:09回答 1 已采纳 https://www.jb51.net/article/58589.htm
- 2013-11-28 08:27回答 3 已采纳 Here are some references which should answer your question: mysqli_fetch_row, mysqli_fetch_assoc,
- 2015-11-27 14:14回答 1 已采纳 It's just a case of formatting the output as @Phil-Cooper says: echo "<h3>search results fo
- 2020-10-25 09:37在PHP开发中,mysqli是MySQL数据库的一个扩展,...开发者应该注意在处理完结果集后,无论是使用MYSQLI_STORE_RESULT还是MYSQLI_USE_RESULT,都应该调用mysqli_free_result来释放查询结果占用的资源,避免造成内存泄漏。
- 2018-08-12 12:15回答 2 已采纳 Use mysqli_num_rows($result) to check how many rows were returned from the query. But if table new
- 2014-08-27 08:21回答 3 已采纳 You're overwriting the resultset $result from your SELECT query with a new $result value from the
- 2019-07-07 16:56回答 2 已采纳 I think you should mysqli_fetch_assoc inside while loop Like this. <?php $conn = mysqli_conne
- 2022-09-24 18:08为了防止SQL注入,应始终使用参数化查询或预处理语句,如`mysqli`的`prepare()`和`bind_param()`函数。 数据库查询是PHP与SQL交互的核心部分。以下是一个简单的SELECT查询示例: ```php $stmt = $conn->prepare(...
- 2021-05-28 12:42回答 5 已采纳 通过错误提示可以做到你的mysqli_query执行sql语句失败了,执行sql语句失败会返回false,所以mysqli_fetch_array会出错。 检查你的数据库表名称是否为news,并且大
- 2017-11-10 10:36回答 1 已采纳 The function mysqli_query() returns FALSE on error. If you pass this return value to mysqli_fetch_
- 2013-09-25 23:26回答 3 已采纳 This line will take the first row of your result set and chuck it in the bin: if(mysqli_fetch_arr
- 2021-01-19 04:41老怪看盘的博客 web开发中如果遇到php查询mysql返回大量数据导致...答案是: mysql_query 和 mysql_unbuffered_query 两个函数首先来分析一个典型的实例:在执行下面的代码的时候就会导致php请求mysql返回结果太多(10W以上)导致PHP...
- 2020-09-10 21:24在这个例子中,`bind_result()`函数用于绑定结果集,这样当`fetch()`方法被调用时,结果会被自动赋值给相应的变量。 5. **安全性与性能** 预处理技术的主要优点是提高了安全性,因为它能确保数据不会被解释为SQL...
- 2020-12-18 22:52这是因为`mysql_free_result()`函数是用来释放由`mysql_query()`产生的结果集资源,以防止内存泄漏。但是,对于不返回结果集的SQL语句,调用`mysql_free_result()`是没有必要的,因为没有结果集需要释放。在这种情况...
- 2020-10-25 09:22在使用数据库进行数据交互时,务必注意资源的释放,例如在上面的代码示例中,查询结束后使用mysql_free_result()释放了数据库结果集占用的内存,以及使用mysql_close()关闭了数据库连接,这有助于避免内存泄漏和...
- 2020-10-24 19:36需要注意的是,文章中提及的代码是通过OCR扫描识别出来的,可能会存在一些文字识别错误或遗漏,但在理解上述知识点后,可以根据上下文对代码进行适当的修正。 综上所述,利用PHP结合MySQLi操作数据库,可以实现将...
- 2020-12-19 20:43如果选择失败,`mysql_error()`会显示错误信息,但不建议在生产环境中使用,因为它可能会泄露敏感信息。 ### 3. 设置字符集和执行SQL语句 `mysql_query()`函数可以执行SQL命令,同时设置字符集。例如: ```php ...
- 2020-12-15 18:02结果会按顺序返回,需要使用`mysqli::store_result()`和`mysqli::fetch_row()`来处理每个结果集,并通过`mysqli::more_results()`和`mysqli::next_result()`检查是否存在更多结果。 3. **注意事项**: - **事务...
- 2024-07-25 08:48破碎的天堂鸟的博客 以下是这些扩展中的一些常用函数:连接数据库选择数据库执行SQL语句获取结果集处理结果集在PHP中,和扩展都是用于与MySQL数据库交互的工具,但它们之间存在一些关键的区别。面向对象支持:安全性:预处理语句:事务...
- 没有解决我的问题, 去提问