摘要:[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."名稱可以使用";
}
?>