[PHP]判斷資料庫回傳是否有資料(使用mysql_num_row來處理)

  • 8841
  • 0
  • PHP
  • 2015-10-23

摘要:[PHP]判斷資料庫回傳是否有資料(使用mysql_num_row來處理)

 
表單填寫沒有在資料庫的資料,要是沒有存在,則顯示「XXX名稱可以使用」,要是存在則顯示「XXX名稱已被使用」
就當我在測試表單送出去驗證時,雖然出現正常的回覆訊息,但同時出現了一行錯誤訊息
示範程式碼如下,以$input_name為表單送來的資料:
「mysql_nums.php」
<?php
    $input_name="TEST";

    mysql_connect("127.0.0.1","root","");
    mysql_select_db("ithome_test");
    $sql="SELECT * FROM `good_idea` WHERE `name`='$input_name'";
    $result=mysql_query($sql);
    while($row=mysql_fetch_array($result)){
        $db_name=$row['name'];
    }
    if($input_name==$db_name){
        echo $input_name."名稱已被使用";
    }else{
        echo $input_name."名稱可以使用";
    }
?>
輸出結果如圖示:

意思是說db_name變數沒有被定義,但到底是因為什麼呢...?!
把$sql內的語法直接拿過去phpMyAdmin內執行,發現MySQL回傳的竟然是空的查詢結果,難怪$db_name找不到值
 
 
那該怎麼處理這個小Bug呢...
突然想到,要是回傳的結果為空,那代表筆數等於0
那就用筆數去判斷就好啦,想到用先前介紹過的mysql_num_rows函數
 
那就把函數加進去應用,就可以去判斷資料庫有沒有回傳資料了(約在以下程式碼第8~9行)
同時,也因為這樣錯誤訊息也排除了,不會再因為回傳空值而無法定義變數了
示範程式碼如下:
<?php
    $input_name="TEST";

    mysql_connect("127.0.0.1","root","");
    mysql_select_db("ithome_test");
    $sql="SELECT * FROM `good_idea` WHERE `name`='$input_name'";
    $result=mysql_query($sql);
    $nums=mysql_num_rows($result);
    if($nums > 0){
    while($row=mysql_fetch_array($result)){
        $db_name=$row['name'];
    }
        if($input_name==$db_name){
            echo $input_name."名稱已被使用";
        }
    }else{
        echo $input_name."名稱可以使用";
    }
?>