<?
$link=mysql_connect('localhost','root','5225')or die('Could not connect:'.mysql_error());
mysql_select_db('matv')or die ('Could not select database');
$level="SELECT CategoryName FROM ma_category where CategoryLevel=1 ";
mysql_query('set Names "UTF8"'); /*db编码转为utf-8,要先转再查询,不然会乱码*/
$result=mysql_query($level); /*执行sql语句*/
$row=mysql_fetch_array($result);
$thename=$row['theName'];while($line = mysql_fetch_array($result,MYSQL_ASSOC))
{
echo "<div class='menu_top'><a target='_self' class='menu_a' href=''>{$line['CategoryName']}</a></div>";
}
mysql_free_result($result);
mysql_close($link);
?>
这段代码是我自己写的一个小的菜单 在论坛朋友们的帮助下 实现了其功能 但是有很多小的地方不是很明白 我希望把他弄懂 不然的话以后自己还是不会 也希望以后可以帮助其他朋友
1· 第三行在select的时候 前面的$level只是走个过场么?其命名貌似无所谓 就是个变量?
2·执行完sql语句后 $row把结果保留为数组 好像使这个意思 那如果我前面比如计算了一个搜索的和 在select中count了一下 那么搜索结果应该是一个数字 这个数字我要怎么提取 书上写的是$num_results=mysqli_num_rows($result) 求白话文解释一下
3· $thename=$row['theName'] 这句话是将结果数组赋给$thename? 如果是的话 为什么我不能直接调用$row 感觉多余 而且后面的语句while也没有用到$thename 是不是我写多了?
4·while循环里面的$line 也是自定义变量么? 括号里面的MYSQL_ASSOC是什么意思啊?纯新手问题 谢·
$link=mysql_connect('localhost','root','5225')or die('Could not connect:'.mysql_error());
mysql_select_db('matv')or die ('Could not select database');
$level="SELECT CategoryName FROM ma_category where CategoryLevel=1 ";
mysql_query('set Names "UTF8"'); /*db编码转为utf-8,要先转再查询,不然会乱码*/
$result=mysql_query($level); /*执行sql语句*/
$row=mysql_fetch_array($result);
$thename=$row['theName'];while($line = mysql_fetch_array($result,MYSQL_ASSOC))
{
echo "<div class='menu_top'><a target='_self' class='menu_a' href=''>{$line['CategoryName']}</a></div>";
}
mysql_free_result($result);
mysql_close($link);
?>
这段代码是我自己写的一个小的菜单 在论坛朋友们的帮助下 实现了其功能 但是有很多小的地方不是很明白 我希望把他弄懂 不然的话以后自己还是不会 也希望以后可以帮助其他朋友
1· 第三行在select的时候 前面的$level只是走个过场么?其命名貌似无所谓 就是个变量?
2·执行完sql语句后 $row把结果保留为数组 好像使这个意思 那如果我前面比如计算了一个搜索的和 在select中count了一下 那么搜索结果应该是一个数字 这个数字我要怎么提取 书上写的是$num_results=mysqli_num_rows($result) 求白话文解释一下
3· $thename=$row['theName'] 这句话是将结果数组赋给$thename? 如果是的话 为什么我不能直接调用$row 感觉多余 而且后面的语句while也没有用到$thename 是不是我写多了?
4·while循环里面的$line 也是自定义变量么? 括号里面的MYSQL_ASSOC是什么意思啊?纯新手问题 谢·
1.$level命名无所谓,可以是$a,$b,$c....
2.mysql_num_rows:取得结果集中行的数目
3.mysql_fetch_array是从结果集中取得一行作为关联数组,或数字数组,或二者兼有,$row['xxx']是数组中的一个元素
4.干嘛还要搞个$line,上面的$row直接可以用啊,后面那个什么意思真不知道
就如$f=fopen(...)那样,$f也是个打开的句柄,不是具体的返回值3.貌似
$row=mysql_fetch_array($result);
$thename=$row['theName'];
这两句在这里是多余的,没作用,而且这样写有问题,因为如上所说,$result是需要按记录行逐个返回的4.MYSQL_ASSOC看手册关于mysql_fetch_array()的说明,按字段名返回数组key
$line是逐行读取结果的,读完一行$result就会向下跳,while循环就是判断$result完了没有
每一行记录$line都会重新赋值,就是载入每条记录
是的就是一个变量,一般取名 $sql、$sqlstr 比较直观2-1、执行完sql语句后 $row把结果保留为数组 好像使这个意思
这里不是保存为数组,而是取结果集中的第一条记录。这样一来下面的while循环是从第二条记录开始输出的。这一点需要认真对待,你可能并不需要放弃第一条记录2-2、 那如果我前面比如计算了一个搜索的和 在select中count了一下 那么搜索结果应该是一个数字 这个数字我要怎么提取 书上写的是$num_results=mysqli_num_rows($result) 求白话文解释一下
你要这样提取
如果
$sql = 'select count(*) from tbl_name';
$rs = mysql_query($sql);
$row = mysql_fetch_array($rs);
echo $row[0];
echo $row['count(*)'];如果
$sql = 'select count(*) as cnt from tbl_name';
$rs = mysql_query($sql);
$row = mysql_fetch_array($rs);
echo $row[0];
echo $row['cnt'];3、$thename=$row['theName'] 这句话是将结果数组赋给$thename? 如果是的话 为什么我不能直接调用$row 感觉多余 而且后面的语句while也没有用到$thename 是不是我写多了?
至少在目前的代码中是多写了
$thename=$row['theName'] 的意思是将数组 $row 的名为 theName 的元素的值赋给变量 $thename4、while循环里面的$line 也是自定义变量么? 括号里面的MYSQL_ASSOC是什么意思啊?
是的,一般用 $row,不过 $line 也是行的意思
MYSQL_ASSOC 表示只取关联数组
2.比如
$sql="select * from 表名;
$result=mysql_query($sql);
$num=mysql_num_rows($result)意思就是查询这个表中所有的记录,返回一个数字,也就是总条数
你可以echo $num;会显示一个数字;
3.$thename=$row['theName'] 中括号里面的是数据库表中的字段名,意思是取出字段中的值赋给变量$thename
在这里这句话确实多余的;
4.这里 既然你上面已经写了$row=mysql_fetch_array($result); 那么while($row){}直接用就可以了
$line['CategoryName']我觉得你是不是写错了,括号里不是你的表名嘛,应该写字段名吧
确实 你不说我还真丢了一条记录 那么$row的第一条记录怎么输出啊?
我是不是没有必要遍历每一条然后赋值给$row 我删除了这句话 没有影响