2012-05-12 26 views
0

我有下面的MySQL查詢:做點什麼如果MySQL查詢成功

$content = mysqli_query($dblink, "SELECT * FROM passwordrecovery WHERE code = '$formcode'"); 

      while($row = mysqli_fetch_array($content)) { 
       $db_username = $row['username']; 
       $db_email = $row['email']; 
       $db_code = $row['code']; 
      } 

我想在這裏的某個位置添加IF語句來檢查查詢是否是成功的,但我不知道在哪裏。

基本上,我有一個表單,用戶可以插入一個代碼(通過電子郵件發送)來檢索他們的密碼。但他們可能犯了一個錯誤,並輸入一個不存在於數據庫中的代碼,我想解釋這種情況並返回一個錯誤。我只是不知道該怎麼做?

+0

請爲您正在使用的語言添加標籤(perl?) – Bohemian

+0

對不起它的php。我已經添加了標籤。 – PartisanEntity

+0

@Truth是mysqli,雖然是程序性的,而不是OO mysqli。部分關於預處理語句雖然 –

回答

0

在查詢失敗時,$content將爲FALSE而不是結果資源。檢查它是否不正確。如果他們輸入了不存在的代碼,則不會返回行,因此請通過mysqli_num_rows()檢查至少一行。

$content = mysqli_query($dblink, "SELECT * FROM passwordrecovery WHERE code = '$formcode'"); 

if ($content) { 
    // Check for at least one row returned 
    if (mysqli_num_rows($content) < 1) { 
    // Invalid lookup, show error to user 
    } 
    // Got a row back, so query was valid 
    else { 
    while($row = mysqli_fetch_array($content)) { 
     $db_username = $row['username']; 
     $db_email = $row['email']; 
     $db_code = $row['code']; 
    } 
    } 
} 
else { 
    // Query failure - display error to user 
    // and check mysqli_error() internally for debugging 
} 

我們假定你已經正確地通過mysqli_real_escape_string($formcode)逃脫$formcode

+0

非常感謝。是的,$ formcode被轉義了。 – PartisanEntity

+0

false僅用於語法錯誤和db通信問題。不返回行的查詢不是失敗。它只是一個0行結果集。這就是爲什麼有num_rows()函數 –

+0

@MarcB已經解決 - 我最初誤解了問題。 –

相關問題