我有一些查询 MySQL 数据库的代码。我的问题是,如果只检查表的第一行。我知道我需要一个 for 循环,但我尝试过的不起作用。仅检查第一行的工作代码是
public function checkPart($aid, $uname) {
$result = mysql_query("SELECT * FROM part WHERE aid = '$aid'") or die(mysql_error());
// check for result
$no_of_rows = mysql_num_rows($result);
if ($no_of_rows > 0) {
$result = mysql_fetch_array($result);
$aiddb = $result['aid'];
$unamedb = $result['uname'];
if ($unamedb == $uname) {
// user authentication details are correct
return $result;
}
} else {
// user not found
return mysql_error();
}
}
我尝试的是这样的:
public function checkPart($aid, $uname) {
$result = mysql_query("SELECT * FROM part WHERE aid = '$aid'") or die(mysql_error());
// check for result
$no_of_rows = mysql_num_rows($result);
for($x=1; $x<= $no_of_rows;$x++){
if ($no_of_rows > 0) {
$result = mysql_fetch_array($result);
$aiddb = $result['aid'];
$unamedb = $result['uname'];
if ($unamedb == $uname) {
// user authentication details are correct
return $result;
}
} else {
// user not found
return mysql_error();
}
}
}
有人可以帮我纠正我的代码吗?我是初学者,如果问题太简单,请原谅我。
最佳答案
事实上的方法是使用 while 循环:
$no_of_rows = mysql_num_rows($result);
if ($no_of_rows == 0) {
return mysql_error();
} else {
while ($row = mysql_fetch_assoc($result)) {
// ... use $row['aid'], $row['uname'], etc.
}
}
您自己的代码可能可以工作,但您覆盖了$result
:
$result = mysql_fetch_array($result);
因此,在循环一次迭代之后,您就丢失了查询结果。
注意:mysql_*
函数 are deprecated由于安全问题,建议您学习mysqli_*
或PDO
。
关于php - 在 PHP 中循环执行 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30359584/