一个关于mysql_fetch_array的问题
程序员文章站
2022-06-16 16:43:16
...
当我们获取数据库多行记录时,一般都做循环
while ($arr = mysql_fetch_array($result,MYSQL_ASSOC)){
var_dump($arr);
}
但是当这么写的时候就会发生错误
$arr = mysql_fetch_array($result,MYSQL_ASSOC);
while($arr){
var_dump($arr);
}
我知道,形参$arr被强制转换成了字符串,我个人臆测mysql_fetch_array后得到的是一个resource类型,不知道对不对,请各位指教。另外,如果属实,怎么把$arr在赋值时定义为资源变量?
while ($arr = mysql_fetch_array($result,MYSQL_ASSOC)){
var_dump($arr);
}
但是当这么写的时候就会发生错误
$arr = mysql_fetch_array($result,MYSQL_ASSOC);
while($arr){
var_dump($arr);
}
我知道,形参$arr被强制转换成了字符串,我个人臆测mysql_fetch_array后得到的是一个resource类型,不知道对不对,请各位指教。另外,如果属实,怎么把$arr在赋值时定义为资源变量?
回复讨论(解决方案)
$arr = mysql_fetch_array($query,MYSQL_ASSOC); while(list($k, $v) = each($arr)){//改成这样,不然直接$arr没有条件,mysql_fetch_array是有指针的 var_dump($arr); }
用PDO statement
$arr = mysql_fetch_array($result,MYSQL_ASSOC);//直接while ($arr = mysql_fetch_array($result,MYSQL_ASSOC))可以是因为有指针 while(list($k, $v) = each($arr)){//改成这样,不然直接$arr没有条件,会一直执行,所以会出错 var_dump($arr); }
$arr = mysql_fetch_array($result,MYSQL_ASSOC);//直接while ($arr = mysql_fetch_array($result,MYSQL_ASSOC))可以是因为有指针 while(list($k, $v) = each($arr)){//改成这样,不然直接$arr没有条件,会一直执行,所以会出错 var_dump($arr); }谢谢,不过我知道可以这么实现,我想问的不是怎么实现,而是想知道fetch_array得到的是什么类型以及如何赋值为资源变量
mysql_fetch_array 得到的是数组
你可以用 gettype 观察到
转换数据类型可用 settype 函数
但不可能转换成资源!
手册中明确的说:由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此无法将其它类型的值转换为资源。
mysql_fetch_array 得到的是数组
你可以用 gettype 观察到
转换数据类型可用 settype 函数
但不可能转换成资源!
手册中明确的说:由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此无法将其它类型的值转换为资源。 多谢!受教了
上一篇: MySQL数据库的备份与还原中常用命令
下一篇: Oracle存储过程如何迁移到Hive?
推荐阅读
-
关于SQL语句中的AND和OR执行顺序遇到的问题
-
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
-
关于PHP5.6+版本“No input file specified”问题的解决
-
Asp.net中处理一个站点不同Web应用共享Session的问题
-
关于Gradle下载失败问题的快速解决方法
-
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
-
关于iOS导航栏返回按钮问题的解决方法
-
JavaScript的for循环中嵌套一个点击事件的问题解决
-
网站要升级改版 才发现一个让人揪心的问题
-
Android解决Spinner初始化时自动选择第一个 item 及点击已选中的 item 时不触发Listener问题