我刚开始学习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
会存储一个空集&#39;这让我很好奇。什么是空集的数据类型?它可以用在逻辑子句中,比如
if($coursevalid = '') {...}
?
我用Google搜索了mysql空集,但没有找到令人满意的解释。希望有人能够详细解释这件事是如何运作的。 THX。
答案 0 :(得分:1)
mysql_query()
返回一个资源,然后您可以使用该资源返回各种信息,包括您的查询可能找到的任何数据。您无法将资源的值与任何内容进行比较 - 它只是PHP函数使用的内部标识符。在这种情况下,没有“空集”的概念。
您可以通过多种方式查看此内容。您已经在查看mysql_num_rows()
以查看退回商品的数量。您可以通过查看零来检查“空集”。
或者,您只需从mysql_fetch_array()
或类似的集合中检索行,直到函数返回false
,此时不再有要检索的行。
注意: {@ 1}}函数已弃用。您不应该将它们用于新代码。请改用mysql_*()
或mysqli_*()
。
另请注意,您没有转义PDO
变量。这是SQL注入的主要目标。在提交查询之前,至少应该使用$_POST['courseno']
,但是你应该真正考虑使用预准备语句。