MySQL查询返回空集时该怎么办?

时间:2014-04-06 23:29:01

标签: php mysql

我刚开始学习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。

1 个答案:

答案 0 :(得分:1)

mysql_query()返回一个资源,然后您可以使用该资源返回各种信息,包括您的查询可能找到的任何数据。您无法将资源的值与任何内容进行比较 - 它只是PHP函数使用的内部标识符。在这种情况下,没有“空集”的概念。

您可以通过多种方式查看此内容。您已经在查看mysql_num_rows()以查看退回商品的数量。您可以通过查看零来检查“空集”。

或者,您只需从mysql_fetch_array()或类似的集合中检索行,直到函数返回false,此时不再有要检索的行。

注意: {@ 1}}函数已弃用。您不应该将它们用于新代码。请改用mysql_*()mysqli_*()

另请注意,您没有转义PDO变量。这是SQL注入的主要目标。在提交查询之前,至少应该使用$_POST['courseno'],但是你应该真正考虑使用预准备语句。