2015-10-04 85 views
0

我正在研究如何檢查數據庫中是否已存在值。 每當我試着輸入一些(例如:000)總有一個錯誤:警告:mysql_num_rows()預計參數1是資源..., 但輸入保存在數據庫中檢查值,如果已經存在不工作(PHP)

然後如果我再次輸入相同的條件下,以檢查是否存在的價值不工作

if (isset($_POST['add'])) 
    { 
     $docid = $_POST['docid']; 

     $check = mysql_query("SELECT doc.docid, doc_details.docid FROM doc, doc_details WHERE docid='$docid'"); 
     $number_of_rows = mysql_num_rows($check); 
     if ($number_of_rows > 0) 
      { 
       echo "<script> alert('Your input already exist, no input made'); </script>"; 
      } 
     else 
      { 
       $insert = mysql_query("INSERT INTO doc (docid) VALUES ('$docid')"); 
       $insert = mysql_query("INSERT INTO doc_details (docid) VALUES ('$docid')"); 
       echo "<script> alert('ADDING: Successful'); </script>"; 
      } 
    } 
+0

發佈您的$ check功能 – 2015-10-04 12:41:41

+0

echo mysql_num_rows($ check);它會顯示計數 –

回答

0

由於described in the manual發生錯誤時的mysql_query返回false。如錯誤所述,$check不是資源,所以它可能是false。所以在你的第一個SELECT查詢中有錯誤,你應該調試它。

你可以試試這個,它可能會告訴你什麼是錯的:

$check = mysql_query("SELECT doc.docid, doc_details.docid FROM doc, doc_details WHERE docid='$docid'"); 
    if (false === $check) 
     var_dump(mysql_error()); 

由於false is never bigger than 0,你的腳本將總是試圖插入,忽略錯誤。

Offtopic;你應該使用migrate to mysqli_*而不是使用mysql_函數。

+0

它說,字符串(43)「列'docid'中的where子句是不明確的」, 我該如何解決? – gauche23

+0

最簡單的解決方案是隻檢查doc表:'$ check = mysql_query(「SELECT docid FROM doc WHERE docid ='$ docid'」);' – Sjon

+0

感謝兄弟,現在正在工作 – gauche23