Php 如果未找到mysql列,$result等于零?
如果PHP中不存在该列,如何使Php 如果未找到mysql列,$result等于零?,php,Php,如果PHP中不存在该列,如何使$result太等于零 我是这样想的: $result=mysql_query("SELECT * FROM users WHERE username=$key DESC LIMIT 1")or die ($result = ''); $result=mysql_query("SELECT * FROM users WHERE username=$key DESC LIMIT 1"); if (mysql_num_rows($result) == 0) $
$result
太等于零
我是这样想的:
$result=mysql_query("SELECT * FROM users WHERE username=$key DESC LIMIT 1")or die ($result = '');
$result=mysql_query("SELECT * FROM users WHERE username=$key DESC LIMIT 1");
if (mysql_num_rows($result) == 0)
$result = '';
但有人告诉我这是错误的。这是错误的,因为当发生DB错误时,您正在使用die终止脚本,而不是在找不到行时执行操作 您大概需要的是:
$result = mysql_query($query);
if ($result) {
if ($row = mysql_fetch_assoc($result)) {
// do stuff with row
} else {
// do stuff without row
}
} else { // not needed but left here for illustration purposes
// this is the part that would occur, had you called mysql_query(...) or die;
die(mysql_error());
}
然后检查mysql\u num\u rows()的结果。如果您的意思是结果返回0行,您可以使用mysql\u num\u rows进行检查,如下所示:
$result=mysql_query("SELECT * FROM users WHERE username=$key DESC LIMIT 1")or die ($result = '');
$result=mysql_query("SELECT * FROM users WHERE username=$key DESC LIMIT 1");
if (mysql_num_rows($result) == 0)
$result = '';
如果出现错误,代码会将
$result
设置为'
,在这种情况下mysql\u query
返回false。它还将停止代码,因为您正在调用die()
。但是,空结果集不是错误。在这种情况下,mysql\u query
返回一个没有行的有效资源标识符。如果我理解你的问题,这就是你想要做的:
$result=mysql_query("SELECT * FROM users WHERE username=$key DESC LIMIT 1");
if (mysql_num_rows($result) == 0){
$result = '';
}
您的意思是用户名
列不存在吗?或者你的意思是查询产生0个结果?好问题。我的答案基于前者。您的代码也是错误的,因为if($result)
将检查是否有错误,而不是结果集是否为空。是的,我在您评论时正在修复它。:-)您的代码仍然错误,因为您将只获取第一行。这有什么问题?我非常希望OP的用户名栏上有一个唯一的索引。否则,如果一个淘气的用户添加了一个额外的管理员用户,他将面临严重的安全问题。好的,我没有在查询中发现limit1
。