0

I'm trying to run this code but there is error message:

PHP Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

<?php

if (mysql_connect('localhost','root','') && mysql_select_db('guestbook'))
    {
        //echo 'connected today';
        $time= time();
        $errors= array();
    if (isset($_POST['guestbook_name'], $_POST['guestbook_email'], $_POST['guestbook_message']))
        {
             $guestbook_name = mysql_real_escape_string(htmlentities($_POST['guestbook_name']));
             $guestbook_email = mysql_real_escape_string(htmlentities($_POST['guestbook_email']));
             $guestbook_message = mysql_real_escape_string(htmlentities($_POST['guestbook_message']));

            if  (empty($guestbook_name) || empty($guestbook_email) ||  empty($guestbook_message))
                {
                     $errors[] = 'All the feilds are required';
                }

                if (strlen($guestbook_name)>25 || strlen($guestbook_email)>255 || strlen('$guestbook_message')>255)
                     {
                          $errors[] = 'One or more feilds exceeded the character limit';
                     }
                        if (empty($errors))
                             {
                                $insert ="INSERT INTO 'entries' VALUES ('','$time','$guestbook_name','$guestbook_email','$guestbook_message')";
                                if (mysql_query($insert))
                                     {
                                         //echo 'sucess';
                                         header('Location: '.$_SERVER['PHP_SELF']);

                                     }
                                             else
                                                 {

                                                    $errors[]= 'Something went wrong, try again';
                                                 }

                            }
                                             else
                            {
                                foreach($errors as $errors)
                                     {
                                         echo '<p><strong>'.$errors. '</strong></P>';
                                     }
                            }
        }
    //display data


    $entries = mysql_query("SELECT  'timestamp','name','email','message' FROM 'entries' ORDER BY 'timestamp' DESC");
    if (mysql_num_rows($entries)==0)
        {
        echo 'No entries,yet';
        }
             else
                {
                     while($entries_row= mysql_fetch_assoc($entries))
                        {

                            $entries_timestamp =date('D M Y @ h:i:s',$entries_row['timestamp']);
                            $entries_name =$entries_row['name'];
                            $entries_email =$entries_row['email'];
                            $entries_message =$entries_row['message'];
                            echo '<p><strong>Posted by '.$entries_name.' ('.$entries_email.') on '.$entries_timestamp.'</strong>:<br> '.$entries_message.'</P>';
                         }
                           // echo'Entries found';
                }
    }
        else
                {
        echo 'could not connect! oh no problem again';
                }
?>
<hr>
<hr>
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="POST">
            <strong>Post something...</strong><br>
            Name:<br><input type="text" name="guestbook_name" maxlength="25"><br>
            Email:<br><input type="text" name="guestbook_email" maxlength="255"><br>
            Message:<br><textarea name="guestbook_message" rows="5" cols="40 "maxlength="255"></textarea><br>
            <input type="submit" value="post">
</form>
<hr>
<hr>

Edited by digital-ether: Do use clear and relevant titles for new threads

6
Contributors
10
Replies
11
Views
6 Years
Discussion Span
Last Post by Stefano Mtangoo
0

You can view the error message by typing the following:

$entries = mysql_query("SELECT  timestamp,name,email,message FROM entries ORDER BY timestamp DESC") or die(mysql_error());

This will show you the reason why you are facing such an error message. It might be because you have mistyped the name of some field or the name of the table itself.

Edited by Pro2000: n/a

0

There should be error in your query. Just echo your query as follows

echo "SELECT  'timestamp','name','email','message' FROM 'entries' ORDER BY 'timestamp' DESC";
  $entries = mysql_query("SELECT  'timestamp','name','email','message' FROM 'entries' ORDER BY 'timestamp' DESC");

and in output page copy that query and paste it in the sql section of your phpmyadmin and see what is the result.

Edited by karthik_ppts: n/a

0

I would go with saying it's likely an error on your behalf, don't worry we all make them from time to time! Open up your database table, check all the names, names ARE case sensitive so also make sure you have the right casing for the name of the column.

But still, as said above by others, echo out your query, and take a look at the error, it will most likely point you to a bit of your query string.

Kind Regards,
Jack.

0

I put the query in the myphp admin sql section: this was the message:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$entries = mysql_query(&quot;SELECT 'timestamp','name','email','message' FROM 'entri' at line 1

0

Just put the following query only in the SQL section of phpMyAdmin.

SELECT  'timestamp','name','email','message' FROM 'entries' ORDER BY 'timestamp' DESC
0

Replace the single quotes(') with (`) as follows. It should work.

SELECT  `timestamp`,`name`,`email`,`message` FROM `entries` ORDER BY `timestamp` DESC
0

Guys! The error that is shown in phpMyAdmin is the same that appears when you type the OR DIE statement as I typed above.

$entries = mysql_query("SELECT timestamp,name,email,message FROM entries ORDER BY timestamp DESC") or die(mysql_error());

This will, for sure, show you the problem you're encountering.

Edited by Pro2000: n/a

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.