我刚开始学习PHP和MySQL。我现在正在为课程注册做一个小项目。我使用表格coursetbl
来存储课程信息,如代码、名称、配额。当用户填写申请表时,我会首先检查他/她是否填写了有效的课程代码,通过
$coursevalid=mysql_query("select * from coursetbl where courseno = '$_POST[courseno]'");
$cvalid = mysql_num_rows($coursevalid);
if ($cvalid=1) {echo "Course number validated.<br />";}
else {die( "Invalid course code.");}
当输入代码有效时,一切都很好。但当它不是时,$coursevalid
存储一个"空集",这让我很好奇。空集的数据类型是什么?它可以在逻辑子句中使用吗,例如 if($coursevalid = '') {...}
?我用谷歌搜索了mysql空集,但没有找到令人满意的解释。希望有人能详细解释一下这个东西是如何工作的。感谢。
mysql_query()
返回一个资源,然后您可以使用该资源返回各种信息,包括查询可能找到的任何数据。你不能将资源的价值与任何东西进行比较 - 它只是PHP函数使用的内部标识符。在这种情况下,没有"空集"的概念。
您可以通过几种方式进行检查。您已经在查看mysql_num_rows()
以检查返回的项目数。您可以通过查找零来检查"空集"。
或者,你可以简单地从集合中检索具有 mysql_fetch_array()
或类似值的行,直到函数返回 false
,此时没有更多的行要检索。
注意:mysql_*()
函数已弃用。不应将它们用于新代码。请改用mysqli_*()
或PDO
。
另请注意,您不会转义 $_POST['courseno']
变量。这是 SQL 注入的主要目标。至少你应该在提交查询之前使用它mysql_real_escape_string()
,但你应该真正考虑使用预准备语句。