Mysql_query вставить в

#php #mysql

#php #mysql

Вопрос:

У меня проблема с этой вставкой в запрос mysql. Если я выполняю это на локальном хосте, все работает нормально. Однако на моем веб-сервере он не хочет работать, и я не знаю почему. Однако я пытался изменить синтаксис многими способами.

 <?

if( $_POST )
{
 $dbhost ='ip address';
 $dbuser = 'username';
 $dbpassword = 'password';
 $database = 'db1214492_davidmszabo';

 $con = mysql_connect($dbhost, $dbuser, $dbpassword);

if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db($database, $con);


 $users_name = $_POST['name'];
 $users_email = $_POST['email'];
 $users_website = $_POST['website'];
 $users_comment = $_POST['comment'];

 $users_name = mysql_real_escape_string($users_name);
 $users_email = mysql_real_escape_string($users_email);
 $users_website = mysql_real_escape_string($users_website);
 $users_comment = mysql_real_escape_string($users_comment);


 $articleid = $_GET['id'];


if( !is_numeric($articleid) )
die('invalid article id');

      $query = "
  INSERT INTO `db1214492_davidmszabo`.`comments` (`id`, `name`, `email`, `website`,
    `comment`, `timestamp`, `articleid`) VALUES (NULL, '$users_name',        '$users_email', '$users_website', '$users_comment',
    CURRENT_TIMESTAMP, '$articleid');";

/* INSERT INTO `inmoti6_mysite`.`comments` (`id`, `name`, `email`, `website`,
    `comment`, `timestamp`, `articleid`) VALUES (NULL, '$users_name',
    '$users_email', '$users_website', '$users_comment',
    CURRENT_TIMESTAMP, '$articleid');";*/

 $sql = "INSERT INTO `db1214492_davidmszabo`.`comments` (`id`, `name`, `email`,      `website`, `comment`, `timestamp`,
  `articleid`) 
 VALUES (NULL , '$users_name', '$users_email', '$users_website', '$users_comment',      CURRENT_TIMESTAMP, '$articleid')";

 /*    $sqlTwo = 'INSERT INTO `db1214492_davidmszabo`.`comments` (`id`, `name`, `email`,     `website`, `comment`, `timestamp`,
  `articleid`) VALUES ('', 'cd', 'ddsa@enauk.com', 'dda.com', 'dsaf',     CURRENT_TIMESTAMP, '1');'; -  this is the code copied from the phpmyadmin when I insert something in the database */

 mysql_query($query);

 echo "<h2>Thank you for your Comment!</h2>";

  mysql_close($con);
}

?>
  

// Отредактированный пост — И я не пытаюсь подключиться к localhost. Я получил IP-адрес в $dbhost = «» —
Это ошибка, которую я получил, добавив еще две: строки error_reporting(E_ALL); и
ini_set(‘display_errors’, 1); — и изменил соединение на mysqli_connect();

Предупреждение: mysql_real_escape_string(): не удается подключиться к локальному серверу MySQL через сокет ‘/var/lib/mysql/mysql.sock’ (2) в /usr/local/pem/vhosts/479307/webspace/httpdocs/davidmszabo.com/articles/manage_comments.php в строке 105 Предупреждение: mysql_real_escape_string(): не удалось установить ссылку на сервер в /usr/local/pem/vhosts/479307/webspace/httpdocs/davidmszabo.com/articles/manage_comments.php в строке 105 Предупреждение: mysql_real_escape_string(): Не удается подключиться к локальному серверу MySQL через сокет ‘/var/lib/mysql/mysql.sock’ (2) в /usr/local/pem/vhosts/479307/webspace/httpdocs/davidmszabo.com/articles/manage_comments.php в строке 106 Предупреждение: mysql_real_escape_string(): не удалось установить ссылку на сервер в /usr/local/pem/vhosts/479307/webspace/httpdocs/davidmszabo.com/articles/manage_comments.php в строке 106 Предупреждение: mysql_real_escape_string():Не удается подключиться к локальному серверу MySQL через сокет ‘/var/lib/mysql/mysql.sock’ (2) в /usr/local/pem/vhosts/479307/webspace/httpdocs/davidmszabo.com/articles/manage_comments.php в строке 107 Предупреждение: mysql_real_escape_string(): не удалось установить ссылку на сервер в /usr/local/pem/vhosts/479307/webspace/httpdocs/davidmszabo.com/articles/manage_comments.php в строке 107 Предупреждение: mysql_real_escape_string(): не удается подключиться к локальному серверу MySQL через сокет ‘/var/lib/mysql/mysql.sock’ (2) в /usr/local/pem/vhosts/479307/webspace/httpdocs/davidmszabo.com/articles/manage_comments.php на линии108 Предупреждение: mysql_real_escape_string(): не удалось установить ссылку на сервер в /usr/local/pem/vhosts/479307/webspace/httpdocs/davidmszabo.com/articles/manage_comments.php в строке 108 Предупреждение: mysql_query(): Не удается подключиться к локальному серверу MySQL через сокет ‘/var/lib/mysql/mysql.sock’ (2) в /usr/local/pem/vhosts/479307/webspace/httpdocs/davidmszabo.com/articles/manage_comments.php в строке 155 Предупреждение:mysql_query(): не удалось установить ссылку на сервер в /usr/local/pem/vhosts/479307/webspace/httpdocs/davidmszabo.com/articles/manage_comments.php в строке 155

а затем после моего комментария:

Спасибо за ваш комментарий

ошибка заключается в следующем:

Предупреждение: mysql_close() ожидает, что параметром 1 будет ресурс, объект, указанный в /usr/local/pem/vhosts/479307/webspace/httpdocs/davidmszabo.com/articles/manage_comments.php в строке 165

Комментарии:

1. Успешно ли работает mysql_connect?

2. mysql_connect устарел. Вам следует изучить возможность обновления до MySQLi / PDO.

3. «не работает» — это не ошибка, которую вы получаете, и не подробное описание того, что не так. Пожалуйста, приложите некоторые усилия к описанию ситуации, вместо того, чтобы просто сбрасывать свой код.

4. Включено ли сообщение об ошибках?

5. Поскольку вы даже не потрудились проверить возвращаемое значение из mysql_query() и, очевидно, просто предполагаете, что все всегда будет работать и никогда не взорвется …. возможно, вам следует начать проверку на сбой: $result = mysql_query(...) or die(mysql_error()) скажет вам, почему это не удалось.

Ответ №1:

Какова структура таблицы, в которую вы вставляете? Если id столбец AUTO_INCREMENT — вы не должны пытаться его вставить.

Кроме того, я не уверен, является ли CURRENT_TIMESTAMP это допустимым значением (особенно, если столбец является DATETIME типом). Возможно, более опытный гуру MySQL может меня поправить. Я всегда использую NOW() вместо

Попробуйте это:

 $sql = "INSERT INTO `$database`.`comments` (`name`, `email`, `website`, `comment`, `timestamp`, `articleid`) 
        VALUES ('$users_name', '$users_email', '$users_website', '$users_comment', NOW(), '$articleid')";