如果找不到mysql列,$ result等于什么?

时间:2011-05-28 13:59:52

标签: php

如果PHP中不存在该列,我如何才能使$result过于平等?

我在想这样的事情:

$result=mysql_query("SELECT * FROM users WHERE username=$key DESC LIMIT 1")or die ($result = '');

但我被告知错了。

5 个答案:

答案 0 :(得分:3)

这是错误的,因为你在发生数据库错误时使用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());
}

答案 1 :(得分:0)

$result=mysql_query("SELECT * FROM users WHERE username= '$key' LIMIT 1")or die (mysql_error());

然后检查mysql_num_rows()

的结果

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

如果出现错误,您的代码会将$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 = '';
}

答案 4 :(得分:0)

<?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]);
?>