Php 如果未找到mysql列,$result等于零?

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) $

如果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 = '';

但有人告诉我这是错误的。

这是错误的,因为当发生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