使用旧的 mysql_* API 检查是否存在行

2022-08-30 17:25:58

我只想检查并查看$lectureName显示的地方是否存在一行。如果确实存在一行,其中某个地方$lectureName,我希望该函数返回“已分配”,如果不是,那么它应该返回“可用”。这是我所拥有的。我很确定这是一团糟。请帮忙。

function checkLectureStatus($lectureName)
{
 $con = connectvar();
 mysql_select_db("mydatabase", $con);
 $result = mysql_query("SELECT * FROM preditors_assigned WHERE lecture_name='$lectureName'");
  while($row = mysql_fetch_array($result));
  {
     if (!$row[$lectureName] == $lectureName)
     {
         mysql_close($con);
         return "Available";
     }
      else
     {
        mysql_close($con);
        return "Assigned";
    }
}

当我这样做时,一切都返回可用,即使它应该返回分配。


答案 1

检查行是否存在的最简单方法:

$lectureName = mysql_real_escape_string($lectureName);  // SECURITY!
$result = mysql_query("SELECT 1 FROM preditors_assigned WHERE lecture_name='$lectureName' LIMIT 1");
if (mysql_fetch_row($result)) {
    return 'Assigned';
} else {
    return 'Available';
}

无需弄乱数组和字段名称。


答案 2

这应该可以解决问题:只需将结果限制为1行;如果某一行返回,则为“已分配”,否则为“可用”。$lectureName

function checkLectureStatus($lectureName)
{
    $con = connectvar();
    mysql_select_db("mydatabase", $con);
    $result = mysql_query(
        "SELECT * FROM preditors_assigned WHERE lecture_name='$lectureName' LIMIT 1");

    if(mysql_fetch_array($result) !== false)
        return 'Assigned';
    return 'Available';
}

推荐