Zee
Zee

Reputation: 249

MySQL and php connection error

I created a form using php, mysql and xampp server. The problem is that whatever I write in this form it shows that the "message failed to send" and even when I check my db using http://localhost/phpmyadmin/ the message is not there. Here is the code. P.S I followed a video tutorial and it is exactly the same that made me totally lost. Please help.

The Connection code is:

<?php

$db_host = 'localhost';
$db_user= 'root';
$db_pass= 'the password';

$db_name= 'chat';

if ($connection= mysql_connect($db_host, $db_user, $db_pass)) {

    echo "Connected to Database Server...<br  />";

    if ($database= mysql_select_db($db_name, $connection)) {
        echo "Database has been selected... <br  />";
    } else {
        echo "Database was not found. <br  />";
    }
} else {
    echo "Unable to connect to MYSQL server.<br  />";
}
?>

And the function code is:

<?php

    function get_msg() {

        $query = "SELECT 'Sender', 'Message' FROM 'chat' . 'chat'"; 

        $run = mysql_query($query);

        $messages= array();

        while($message = mysql_fetch_assoc($run)) {
            $messages[]= array ('sender' =>$message['Sender'], 
                                'message'=>$message['Message']);
        }

        return $messages;

    }

    function send_msg($sender, $message) {

        if(!empty($sender) && !empty($message)){

            $sender  = mysql_real_escape_string($sender);
            $message  = mysql_real_escape_string($message);

            $query = "INSERT INTO 'chat'.'chat' VALUES (null, '{$sender}', '$message')";

            if($run = mysql_query($query)) {
                return true;
            } else {
                return false;
            }

        } else {
            return false;
        }
    }
?>

Upvotes: 0

Views: 146

Answers (3)

Michael F
Michael F

Reputation: 21

I am a novice in PHP and MySQL so I tend to always explicitly exit or die on MySQL on errors.

<?php
$db = new mysqli('host', 'username', 'password', 'db');
if($db->connect_errno > 0){
    die('Unable to connect to database [' . $db->connect_error . ']');
    // no reason to continue, no db connection
}

$statement="SELECT * from `bufferlines` WHERE `beloeb` >'-400' AND `tekst` LIKE 'Dankort-nota SuperB%'";
if(!$res=$db->query($statement)){
        printf("Error: %s\n", $db->error); //show MySQL error
        echo "<br />".$statement; // show the statement that caused that error
        exit("Error 4");//no reason to continue, show where in code
}

?>

This way I get it thrown in my face and cannot get any further until I have pinned down and corrected the error.

The number in exit("Error 4") is only to find the place in the code where it went wrong and thus is unique.

I know this is counter productive when you know your stuff, but for me it's an invaluable learning tool together with php.net dev.mysql.com and stackoverflow.com

Upvotes: 2

Adnan
Adnan

Reputation: 2031

$query = "INSERT INTO `chat`.`chat` VALUES (null, '{$sender}', '$message')";

Note the ` and it's not '

Upvotes: 2

Richard
Richard

Reputation: 2815

I have found the problem in your SQL query:

$query = "INSERT INTO 'chat'.'chat' VALUES (null, '{$sender}', '$message')";

You have to specify the fields there, the SQL query is invalid. Also you have used the wrong escape characters. This works:

$query = "INSERT INTO `chat`.`chat` (`ID`, `sender`, `message`) VALUES (null, '{$sender}', '$message')";

You do not have to specify a null value if you use AUTO_INCREMENT:

$query = "INSERT INTO `chat`.`chat` (`sender`, `message`) VALUES ('{$sender}', '$message')";

And please use MySQLi instead of MySQL because it is deprecated. Furthermore, the database should not be specified twice, simple use:

$query = "INSERT INTO `chat` (`sender`, `message`) VALUES ('{$sender}', '$message')";

Upvotes: 2

Related Questions