php中sql语句不能执行2次或者以上么?新手求教

今天我试着写了以下语句,可是while循环那里卡住了,,请问各位大神哪里错了?
$sql=mysql_query('select * from setting_work');

$rs=mysql_fetch_assoc($sql);
if($rs!=null){
echo '<script type="text/javascript">alert("已执行");</script>';
while($row=mysql_fetch_assoc($sql)){
echo '<script type="text/javascript">alert("已执行2");</script>';
………………………………
}
}
如果新建一条sql语句则能正常执行……

$sql1=mysql_query('select id from setting_work');
$sql=mysql_query('select * from setting_work');

$rs=mysql_fetch_assoc($sql1);
if($rs!=null){
echo '<script type="text/javascript">alert("已执行");</script>';
while($row=mysql_fetch_array($sql)){
echo '<script type="text/javascript">alert("已执行2");</script>';
……………………
}}

第1个回答  2015-12-08
你已经把mysql_fetch_assoc($sql);赋给了$rs
为什么还要重新while一遍呢?
试试
while($rs){
echo $rs[1];
echo $rs[2];
}追问

你的意思是这样么?

$rs=mysql_fetch_assoc($sql);

if($rs!=null){

echo '<script type="text/javascript">alert("已执行");</script>';

while($rs){

一直等待localhost的响应…然后无限循环输出一个数据不变,这不对啊……

正常的应该是这样:

追答

$sql="select * from setting_work";
$rs=mysql_query($sql);
while ($row=mysql_fetch_array($rs)) { //循环记录集
echo 'alert("已执行2");';
}
这样子的
不要去if

追问

我的想法是如果数据库为空,则不进行while循环,所以还是需要if来判断数据库是否为空。总之框架是这样的if(数据库不为空){while循环}。这个怎么做?

追答

你想的太多了,while自己本来就会判断参数是否为空。while取出结果集>为空>停止执行。如果你加if,则是if是否有结果集>为空>停止while。过程没什么区别
如果你非要加个if
那就套外面
if ($row=mysql_fetch_array($rs)){
while($row=mysql_fetch_array($rs)){
...
}
}
你看,这俩判断都是同一个过程,套一个if没有意义。
mysql_fetch_array()返回的结果是true或false,符合if的判断方法,而也是while条件的判断参数。
mysql_query()也返回true或false,但是那只表明这条语句向数据库发送查询的过程是否成功。而查询的结果要给mysql_fetch_array(),因此mysql_fetch_array()是否接到了资源,要靠mysql_fetch_array()来决定。因此套个if毫无意义

追问

那按你的想法,如果数据库为空,则输出“数据库为空,请添加”这样一句话,该怎么实现呢?还有,为什么我上面用了if的那个语句,在数据库不为空的时候,while也不进行循环呢?

就以上面语句为例为例,执行上面语句后,“已执行“这个弹窗能弹出来,可是”已执行2“却弹不出来,我确认数据库中是不为空的。

追答

请认真阅读每个函数的返回值和表达式含义。话不多说,直接给你结果:

 

数据库中有userA和userB,你的方法和正确方法的差别就在于你已经取出一次了。

本回答被提问者采纳
第2个回答  2015-12-08
$sql1=mysql_query('select id from setting_work');
$sql=mysql_query('select * from setting_work');

$rs=mysql_fetch_assoc($sql1);
$rs2=mysql_fetch_assoc($sql);
if($rs!=null){
echo '<script type="text/javascript">alert("已执行");</script>';
if($rs2!=null){
echo '<script type="text/javascript">alert("已执行2");</script>';
……………………
}}追问

额……你这是要干嘛……我想问的是程序哪里错了,并不是要去掉while函数……

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网