检查返回的值是不是为空[重复]
Posted
技术标签:
【中文标题】检查返回的值是不是为空[重复]【英文标题】:Checking if value returned is empty [duplicate]检查返回的值是否为空[重复] 【发布时间】:2015-06-23 13:03:43 【问题描述】:我有一个简单的 php 文件,我在其中使用以下代码检查用户的电子邮件是否存在于我的数据库中:
$query = "SELECT * FROM userData WHERE email = '$email'";
$result = mysql_query($query);
当用户输入数据库中的电子邮件地址时,它工作得非常好,但是,当我想确定这个 $query 是 null 还是空时 - 我不确定是哪一个。
当我输入不在数据库中的电子邮件并在下面添加以下代码时:
if(is_null($result))
echo 'email not in database';
中的代码未执行。
我只是想知道你能不能帮帮我。
你好,
很抱歉重复了另一个帖子。我使用以下方法纠正了它:
if(mysqli_num_rows($result) > 0)
// a row with email exists
else
// no row with particular email exists
【问题讨论】:
mysql_query
返回执行的查询资源。您必须从资源中获取数据或为此计算行数。
强制性don't use mysql_* 功能,特别是如果您是新手 :),现在换成更好的东西,以后省去几个小时的头痛
只是一个警告,这很容易受到SQL injection的影响
is_null
和 empty
之间有很大的不同,尤其是在 MySQL 和 SELECT all 中。你要找的是mysql_num_rows()
或COUNT()
。
【参考方案1】:
您可以通过以下方式直接检查您的查询是否执行
if($result > 0)
// perform some action
您应该使用 mysqli_ 而不是 mysql_,因为它已被弃用,将来会被删除。
您需要mysqli_num_rows()
来查看表格中是否至少有 1 行
供参考 - num_rows
if(mysqli_num_rows($result) > 0)
// a row with email exists
else
// no row with particular email exists
【讨论】:
您应该澄清您正在从 mysql 切换到 mysqli 函数(这是正确的做法)。 修改我的答案【参考方案2】:试试这个
$row = mysql_fetch_rows($result);
if(!$row)
echo 'email not in database';
或
$num = mysql_num_rows($result);
if($num == 0)
echo 'email not in database';
【讨论】:
【参考方案3】:你也可以试试这个!
if(empty($result))
echo 'email not in database';
empty()
将检查$result
是否为null
,或者其值为0
,或者$result
是否不存在。
请看这里:http://php.net/manual/fr/function.empty.php
【讨论】:
以上是关于检查返回的值是不是为空[重复]的主要内容,如果未能解决你的问题,请参考以下文章