如果找不到mysql列,$result等于零


$result equals nothing if mysql column not found?

如果PHP中不存在列,我怎么能让$result等于零呢?

我在想这样的事情:

$result=mysql_query("SELECT * FROM users WHERE username=$key DESC LIMIT 1")or die ($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());
}
$result=mysql_query("SELECT * FROM users WHERE username= '$key' LIMIT 1")or die (mysql_error());

然后检查mysql_num_rows()的结果

如果您的意思是结果返回0行,您可以使用mysql_num_rows进行检查,如下所示:

$result=mysql_query("SELECT * FROM users WHERE username=$key DESC LIMIT 1");
if (mysql_num_rows($result) == 0)
    $result = '';

如果出现错误,您的代码将把$result设置为'',在这种情况下,mysql_query返回false。它还将停止代码,因为您正在调用die()。但是,空的结果集不是错误。在这种情况下,mysql_query返回一个没有行的有效资源标识符。如果我理解你的问题,这就是你想做的:

$result=mysql_query("SELECT * FROM users WHERE username=$key DESC LIMIT 1");
if (mysql_num_rows($result) == 0){
    $result = '';
}
<?php
    // Here I assume you're using PHP PDO
    $pdo = new PDO("mysql:server=localhost;dbname=mydatabase", "root", "");
    $result = $pdo->query("SELECT * FROM users WHERE username=$key DESC LIMIT 1");
    $errorcode = $pdo->errorCode();
    $errorinfo = $pdo->errorInfo();
    // Columns doesn't exist
    if($errorcode == "43072") $result = "";
    // Other error...
    else if($errorcode != "00000") die("MySQL Error: " . $errorinfo[2]);
?>