0

I working on how to check if value already exist in a database. Whenever I try to input something (Example: 000) there's always an error: Warning: mysql_num_rows() expects parameter 1 to be resource..., but the input was saved in the database

then if I input the same again, the condition to check if value exist doesn't work

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>";
            }
    }
gauche23
  • 67
  • 1
  • 4

1 Answers1

0

As described in the manual mysql_query returns false when an error occurs. As the error says, $check is not a resource, so it's probably false. So there is an error in your first SELECT query, you should debug that.

You could try this, it'll probably tell you what's wrong:

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

Since false is never bigger than 0, your script will always attempt to insert, ignoring the error.

Offtopic; you should migrate to mysqli_* instead of using mysql_ functions.

Community
  • 1
  • 1
Sjon
  • 4,989
  • 6
  • 28
  • 46
  • it says, string(43) "Column 'docid' in where clause is ambiguous", how do I solve that? – gauche23 Oct 04 '15 at 12:50
  • Simplest solution is to check only the doc table: `$check = mysql_query("SELECT docid FROM doc WHERE docid='$docid'");` – Sjon Oct 04 '15 at 12:53