本来更新应该是statu=0所有记录的ID最小的值 比如表中下边几个字段值是: id user guanlian_id statu 1 aaa 1000 1 2 1001 0 3 1002 0 4 1005 0 5 1019 0 运行这个程序我想要的结果是: id user guanlian_id statu 1 aaa 1000 1 2 bbb 1001 1 3 1002 0 4 1005 0 5 1019 0 可现在运行结果却是:id user guanlian_id statu 1 aaa 1000 1 2 adf 1001 1 3 aeg 1002 1 4 bbb 1005 0 5 1019 0
完整代码是这样的: <?php function CheckUser($username,$password) { global $db; require("conn2.php"); $sql="select * from users where name='".$username."' and password='".$password."'"; $obj =SelectQuery($sql); if (count($obj)>0) { require_once("conn.php"); $sql="select * from user where user_name='".$username."' and user_password='".$password."'"; $query = $db->query($sql); $row=$db->fetch_array($query); $num2=$db->num_rows($query); if($num2!=0) { if ($row) { $user['username']=$row["user_name"]; $user['guanlianname']=$row["guanlian_id"]; $user['guanlianpassword']=$row["guanlian_password"]; $user['flag']=1; } return $user; exit; } else { $sql="select min(id) from user where statu='0'"; $query = $db->query($sql); if ($row = $db->fetch_array($query)) { $id =$row["min(id)"]; $sql = "update user set user_name='".$username."',user_password='".$password."',statu='1' where id='".$id."'"; $query = $db->query($sql); }
$sql="select user_name,guanlian_id,guanlian_password from user where user_name='".$username."' and user_password='".$password."'"; $query = $db->query($sql); if ($row = $db->fetch_array($query)) { $user['username']=$row["user_name"]; $user['guanlianname']=$row["guanlian_id"]; $user['guanlianpassword']=$row["guanlian_password"]; $user['flag']=2; } return $user; exit; } } else { $user['flag']=3; return $user; } } ?>
我觉得你直接用WHILE 的循环 例如:while($result=mysql_fetch_array("运行select * from user where statu=0的结果") 然后用$result[guanlian_id]可以顺序输出所有statu=0的ID,然后你用一个简单的大小判断运行完这个循环,那么就可以得到最小的ID,然后通过UPDATE 就可以实现你的结果了!
SelectQuery($sql)函数是这样的: function SelectQuery($sql) { $result=@mysql_query($sql,$this->link) or $this->ErrorMessage("Unable to perform this query:<br>\n $sql<br>"); if (!$result) { return $none; // 未找到 返回未定义变量 } $count=0; while ($obj=@mysql_fetch_object($result)) { $msgs[$count++]=$obj; } return $msgs; }
function SelectQuery($sql) { $mysql=new mysql(dbname); $obj=$mysql->SelectQuery($sql); $mysql->close(); return $obj; }
比如表中下边几个字段值是:
id user guanlian_id statu
1 aaa 1000 1
2 1001 0
3 1002 0
4 1005 0
5 1019 0
运行这个程序我想要的结果是:
id user guanlian_id statu
1 aaa 1000 1
2 bbb 1001 1
3 1002 0
4 1005 0
5 1019 0
可现在运行结果却是:id user guanlian_id statu
1 aaa 1000 1
2 adf 1001 1
3 aeg 1002 1
4 bbb 1005 0
5 1019 0
<?php
function CheckUser($username,$password)
{
global $db;
require("conn2.php");
$sql="select * from users where name='".$username."' and password='".$password."'";
$obj =SelectQuery($sql);
if (count($obj)>0)
{ require_once("conn.php");
$sql="select * from user where user_name='".$username."' and user_password='".$password."'";
$query = $db->query($sql);
$row=$db->fetch_array($query);
$num2=$db->num_rows($query);
if($num2!=0)
{
if ($row)
{
$user['username']=$row["user_name"];
$user['guanlianname']=$row["guanlian_id"];
$user['guanlianpassword']=$row["guanlian_password"];
$user['flag']=1;
}
return $user;
exit;
}
else
{ $sql="select min(id) from user where statu='0'";
$query = $db->query($sql);
if ($row = $db->fetch_array($query))
{
$id =$row["min(id)"];
$sql = "update user set user_name='".$username."',user_password='".$password."',statu='1' where id='".$id."'";
$query = $db->query($sql);
}
$sql="select user_name,guanlian_id,guanlian_password from user where user_name='".$username."' and user_password='".$password."'";
$query = $db->query($sql);
if ($row = $db->fetch_array($query))
{
$user['username']=$row["user_name"];
$user['guanlianname']=$row["guanlian_id"];
$user['guanlianpassword']=$row["guanlian_password"];
$user['flag']=2;
}
return $user;
exit;
} }
else {
$user['flag']=3;
return $user;
}
}
?>
3 aeg 1002 1
adf aeg这两个用户是users(第一个查询语句是查users表的)这个表里有的用户。
大家帮忙看看哪个循环有问题?
改成if (count($obj)>=0)试一下。
{
$result=@mysql_query($sql,$this->link) or $this->ErrorMessage("Unable to perform this query:<br>\n $sql<br>");
if (!$result)
{
return $none; // 未找到 返回未定义变量
}
$count=0;
while ($obj=@mysql_fetch_object($result))
{
$msgs[$count++]=$obj;
}
return $msgs;
}
function SelectQuery($sql)
{
$mysql=new mysql(dbname);
$obj=$mysql->SelectQuery($sql);
$mysql->close();
return $obj;
}
还有你最好把你的if语句再优化一下
比如:
if($num>0)
if($row)
...
完全可以:if(!$num && !$row)