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