我怎麼能得到$result
太等同,如果列中不存在PHP?
我的想法是這樣的:
$result=mysql_query("SELECT * FROM users WHERE username=$key DESC LIMIT 1")or die ($result = '');
但有人告訴我這就是錯誤的。
我怎麼能得到$result
太等同,如果列中不存在PHP?
我的想法是這樣的:
$result=mysql_query("SELECT * FROM users WHERE username=$key DESC LIMIT 1")or die ($result = '');
但有人告訴我這就是錯誤的。
這是錯誤的,因爲當數據庫錯誤發生時,您會死於腳本,而不是在發現任何行時執行任何操作。
什麼你可能需要的是更象:
$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]);
?>
你的意思是列'username'不存在?或者你的意思是查詢產生0結果? – Dan 2011-05-28 14:05:52
好問題。我基於前者的答案。 – Hubro 2011-05-28 14:12:27