2011-05-28 42 views
2

我怎麼能得到$result太等同,如果列中不存在PHP?

我的想法是這樣的:

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

但有人告訴我這就是錯誤的。

+0

你的意思是列'username'不存在?或者你的意思是查詢產生0結果? – Dan 2011-05-28 14:05:52

+0

好問題。我基於前者的答案。 – Hubro 2011-05-28 14:12:27

回答

3

這是錯誤的,因爲當數據庫錯誤發生時,您會死於腳本,而不是在發現任何行時執行任何操作。

什麼你可能需要的是更象:

$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

你的代碼也是錯誤的,因爲'if($ result)'將檢查是否有錯誤,而不是結果集是否爲空。 – nitro2k01 2011-05-28 14:10:25

+0

是的,我正在解決,當你評論。 :-) – 2011-05-28 14:10:58

+0

您的代碼仍然是錯誤的,因爲您只會提取第一行。 – Tadeck 2011-05-28 14:28:50

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

然後檢查mysql_num_rows的結果()

0

如果你的意思是結果返回0行,你可以用mysql_num_rows檢查,像這樣:

$result=mysql_query("SELECT * FROM users WHERE username=$key DESC LIMIT 1"); 
if (mysql_num_rows($result) == 0) 
    $result = ''; 
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 = ''; 
} 
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]); 
?>