#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')";