我有一个用于检查某些数据可用性的php脚本。我从外部jquery调用这个脚本。 jquery运行正常。这是我的php:
<?php
$avares = checkAva($fi_nm, $tbl_nm, $txtval);
echo $avares;
function checkAva($field, $table, $curval) {
$avres = mysql_query("SELECT " . $field . " FROM " . $table . "") or die("query failed");
while ($a_row = mysql_fetch_array($avres)) {
$dbval = $a_row[$field];
if ($curval == $dbval) {
return "no";
} else {
return "yes";
}
}
}
?>
$ curval是来自外部jquery的变量。我的问题是虽然数据库中有很多条目,但while循环似乎只运行一次。我用一个整数变量检查它,而while循环似乎只运行一次。你能帮我解决一下吗?
答案 0 :(得分:6)
看看你的代码。
while ($a_row = mysql_fetch_array($avres)) {
$dbval = $a_row[$field];
if ($curval == $dbval) {
return "no";
} else {
return "yes";
}
}
你已经使用了return,如果它返回true,那么也会根据你的需要返回更改。 return语句立即结束当前函数的执行
答案 1 :(得分:1)
它会设计为你有一个return语句。从你所说的你实际上并不想要它返回,但设置一个变量,在执行结束时将返回no或yes。我可能错了,但嘿嘿。
<?php
echo checkAva($fi_nm, $tbl_nm, $txtval);
function checkAva($field, $table, $curval) {
$avres = mysql_query("SELECT " . $field . " FROM " . $table) or die("query failed");
$noOrYes = "yes";
while ($a_row = mysql_fetch_array($avres)) {
if($curval == $a_row[$field]) {
$noOrYes = "no";
}
}
return $noOrYes;
}
?>
答案 2 :(得分:0)
直接将条件放在您的查询中
function checkAva($field, $table, $curval) {
$avres = mysql_query("SELECT " . $field . " FROM " . $table . "
WHERE `".$field."` = '".$curVal."'");
$res = mysql_fetch_array($avres);
if(is_array($res) && count($res) > 0)
return "Yes";
else
return "No";
}
不是得到所有结果并检查每一个结果,而是直接提出一个条件来提取满足你条件的结果。如果你有很多记录,这是明智的。
答案 3 :(得分:0)
您需要将其中一个返回到while循环之外。 例如,如果您只想检查$ curval == $ dbval
while ($a_row = mysql_fetch_array($avres)) {
$dbval = $a_row[$field];
//If the condition was met return with a no
if ($curval == $dbval) {
return "no";
}
}
//If the condition was not met return yes
return yes;
这基本上就是你需要做的事情,所以循环会一直运行,直到满足你的条件或者根本不运行。
答案 4 :(得分:0)
可能导致Loop迭代一次的可能问题是:
用于$ query和$ result的变量中的错误
同名变量在循环内外
Return语句的位置不正确
无效的Mysql语句