PHP mysql_fetch_array 使用问题

tiancai9550 2010-04-11 01:15:30
小弟刚刚接触PHP,现在遇到这样的问题:
<?php
$sqlstr="select news_picaddress,news_head from news where news_pic=1";
mysql_connect("localhost","myuserid","mypassword");
$result = mysql_db_query("xinwen",$sqlstr);
printf("Return Rows Num: %d\n",mysql_num_rows($result));//输出2
printf("Return news_picaddress: %s\n",mysql_result($result,0,"news_picaddress"));//输出查到的地址
while ($rs=mysql_fetch_array($result))
{
print_r($rs); //输出1;
$picaddress=$rs[0]; // $picaddress为null
$picaddress=$rs['news_picaddress']; // $picaddress为null
$picaddress=$rs["news_picaddress"]; // $picaddress为null
}
?>
这是为什么呢?为什么mysql_result有值,而mysql_fetch_array不能正确的提取出查询到的值呢?
...全文
210 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
总哈哈 2010-04-12
  • 打赏
  • 举报
回复
$sqlstr="select news_picaddress,news_head from news where news_pic=1";
mysql_connect("localhost","myuserid","mypassword");
$result = mysql_query($sqlstr);
printf("Return Rows Num: %d\n",mysql_num_rows($result));//输出2
printf("Return news_picaddress: %s\n",mysql_result($result,0,"news_picaddress"));//输出查到的地址
while ($rs=mysql_fetch_array($result))
{
print_r($rs); //输出1;
$picaddress=$rs[0]; // $picaddress为null
$picaddress=$rs['news_picaddress']; // $picaddress为null
$picaddress=$rs["news_picaddress"]; // $picaddress为null
}
总哈哈 2010-04-12
  • 打赏
  • 举报
回复
兄弟,搞本php5的书看吧。
andyxl 2010-04-12
  • 打赏
  • 举报
回复
$result = mysql_query($sqlstr);
===================================

mysql_query(sql,数据库连接);

要两个参数噢。
tiancai9550 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 poorprogramer 的回复:]

在if(!$links)的判断后面加一个
mysql_query('SET NAMES gbk');或者是mysql_query('SET NAMES utf-8') 设置下编码,有时候,编码不一致。会显示乱码或者是什么也不显示的
[/Quote]
加上了
if (!$linkrs)
{
die('Could not connect: ' . mysql_error());
}
$temp = mysql_query('SET NAMES GBK');
$temp值为true,然后还是不行,我的Mysql设置为gbk的编码了,utf-8的也不行。。。
tiancai9550 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xuzuning 的回复:]

给出 print_r($rs); 的结果
[/Quote]
输出 1
PoorProgramer 2010-04-12
  • 打赏
  • 举报
回复
在if(!$links)的判断后面加一个
mysql_query('SET NAMES gbk');或者是mysql_query('SET NAMES utf-8') 设置下编码,有时候,编码不一致。会显示乱码或者是什么也不显示的
xuzuning 2010-04-12
  • 打赏
  • 举报
回复
给出 print_r($rs); 的结果
tiancai9550 2010-04-12
  • 打赏
  • 举报
回复
大侠,

$sqlstr="select 'news_picaddress','news_head','news_class_id','news_type_id','news_id' from news where news_pic=1";
$linkrs = mysql_connect("localhost","root","root");
if (!$linkrs)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("xinwen");
$result = mysql_query($sqlstr);
$rows_num = mysql_num_rows($result); //$rows_num=2
$count = 0;
while ($rs=mysql_fetch_array($result,MYSQL_ASSOC) && $count < 5)
{
print_r($rs); //输出1
$picaddress=$rs["news_picaddress"]; //值为null
$count++;
}

还是不行。。。。
tiancai9550 2010-04-12
  • 打赏
  • 举报
回复
谢谢各位大侠的帮助,下午莫名其妙的好了。。。感谢ghostxyz0和xuzuning对print_r($rs)的不正常输出问题的指出。同时感谢poorprogramer对编码的提醒。ps:是utf8,没有中划线。分就这么多,不好意思了。
ghostxyz0 2010-04-12
  • 打赏
  • 举报
回复
問題是 print_r($rs);//输出1

這裏本來應該是要輸出一個陣列的
卻變成一個數

我建議你在資料庫中 跑一下 你的sql
看看資料庫查詢的結果是怎麼樣
tiancai9550 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 askzhigang 的回复:]

兄弟,搞本php5的书看吧。
[/Quote]
小弟就是在看php5的书,然后想实验下加深印象,结果就是这样。。。百思不得其解。。。快三天了。。。
tiancai9550 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 andyxl 的回复:]

$result = mysql_query($sqlstr);
===================================

mysql_query(sql,数据库连接);

要两个参数噢。
[/Quote]
首先谢谢您的回答,现在我的代码是这样的:
$sqlstr="select 'news_picaddress','news_head','news_class_id','news_type_id','news_id' from news where news_pic=1";
$linkrs = mysql_connect("localhost","root","root");
if (!$linkrs)
{
die('Could not connect: ' . mysql_error());
}
mysql_query('SET NAMES gbk') or die('set failed :'. mysql_error());
mysql_select_db("xinwen",$linkrs) or die ('select failed :'. mysql_error());
$result = mysql_query($sqlstr,$linkrs) or die ('query failed :'. mysql_error());;
$rows_num = mysql_num_rows($result);//$rows_num值为2
$count = 0;
while ($rs=mysql_fetch_array($result,MYSQL_ASSOC) && $count < 5)
{
print_r($rs);//输出1
echo "\n";
echo $rs;//输出1
echo "\n";
echo $rs["news_head"];//无输出
$count++;
}
如果用printf("Return : %s\n",mysql_result($result,0,"news_head"));仅仅输出news_head字段名。
ghostxyz0 2010-04-11
  • 打赏
  • 举报
回复

printf("Return news_picaddress: %s\n",mysql_result($result,0,"news_picaddress"));//输出查到的地址
你把這一句去掉

然後PHP官方強烈建議在PHP 4.0後不要用mysql_db_query, 應用mysql_select_db 和 mysql_query 來進行查詢

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧