请教一个 PHP 中 mysqli::query()返回值传递问题

2019-06-10 13:59:19 +08:00
 opiviqo
请教大家一个 mysql 的问题:mysqli::query ()的返回值 传递问题 eg:
function_0 () {
......
$result = $mysqli_query(...);//返回一个查询结果; 这个结果需要怎么传递出去呢? 我是直接传递 的好像不行?
$result->fetch_assoc(); //取查询结果中的数据
return $result; //返回这个结果
}

我在别的函数中使用该$result:
function_1 () {
......
$result = $function_0(); //获得函数返回的查询结果
$result->fetch_assoc(); //这里就无法获取到数据了。。。
}
2864 次点击
所在节点    PHP
12 条回复
xubeiyan
2019-06-10 14:12:31 +08:00
传进另一个函数请把它加到参数里,比如 function_1($result),function_1 和 function_0 作用域不同
opiviqo
2019-06-10 14:24:46 +08:00
@xubeiyan 感谢您的回复! 我觉得这里$result 没有作用域的问题吧。
fun_1 中:
$result = function_0(); 和您说的用参数传递,难道有区别?
liuxu
2019-06-10 14:28:36 +08:00
$result = $function_0();

$result = function_0();
opiviqo
2019-06-10 14:30:53 +08:00
@xubeiyan 这个只是我发帖打错字了 源码没这个问题 不好意思
haiyang416
2019-06-10 14:31:49 +08:00
function_0 返回数组,然后你为什么还要对返回的数组做 fetch_assoc() 调用?
haiyang416
2019-06-10 14:32:33 +08:00
变量名这么重复用不是好的习惯。
haiyang416
2019-06-10 14:33:23 +08:00
@haiyang416 好吧,我看错了。
haiyang416
2019-06-10 14:40:02 +08:00
@opiviqo 你应该直接返回包含结果的数组,而不是 `mysqli_result` 对象,如果你想复用这个对象,可以参考这个文档: https://www.php.net/manual/en/mysqli-result.data-seek.php
nowgoo
2019-06-10 14:40:28 +08:00
function_0 中已经 fetch 过一次,如果结果集只有 1 行的话,再次 fetch 肯定就没了。
msg7086
2019-06-10 14:46:27 +08:00
刚想说点什么,结果发现楼上几位都说了。
结果集是流式的,读一条少一条,第一个函数把数据读走了,第二个函数读的时候就没的剩了。
opiviqo
2019-06-10 14:53:04 +08:00
@haiyang416 谢谢 使用您推荐的方法搞定
opiviqo
2019-06-10 14:53:45 +08:00
@msg7086 是的 工作流程正如您所说

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/572439

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX