Я испытываю некоторые затруднения с помощью MySQLi для вставки значений в базу данных. Я не получаю ошибок, но вставляемые значения не правильны вообще. Одно из Текстовых полей всегда пусто, и другой всегда имеет значение "ý". Поле INT всегда содержит значение 50396416. Я использую utf8_general_ci.
CREATE TABLE events (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
title TEXT NOT NULL ,
content TEXT NOT NULL ,
date INT UNSIGNED NOT NULL
);
Вот то, что я должен вставить значения:
function insertEvent($title, $content, $date) {
$stmt = $this->db->prepare('INSERT INTO events (title, content, date) VALUES (?, ?, ?)');
$stmt->bind_param('ssi', $title, $content, $date);
$stmt->execute();
$stmt->close();
}
Это кажется довольно простым, таким образом, я не знаю, какова проблема могла быть. Если у Вас есть совет, я хотел бы услышать его!
Я не знаю, могло ли это быть проблемой с моим кодом, или с базой данных, потому что все действительно работало правильно над одним сервером, но не над другим.
На самом деле я просто заметил, через phpinfo()
, то, что серверы, кажется, используют различные версии MySQL. Это могло возможно вызывать проблему?
Я также вполне уверен, что данные, которые я использую, корректны. Я получаю значения от использования формы $_POST
. Например, если, для поля "заголовка", я ввожу "asdf":
$stmt->bind_param('ssi', $title, $content, $date);
$title = $_POST['title'];
echo $title; // echoes "asdf"
Похоже, что это была просто несовместимость с версией (4.something) MySql на сервере. Я заставил их обновлять его, и это, кажется, хорошо работает теперь. Спасибо все, для помощи!
Попробуйте следующее:
$stmt = $this->db->prepare("INSERT INTO events (title, content, date) VALUES ('?', '?', '?')");
Либо используйте отладчик (например, xdebug + netbeans в качестве frontend), либо добавьте больше отладочного вывода.
echo "<pre>Debug: $stmt->bind_param('ssi', $title, $content, $date);\n</pre>";
$stmt->bind_param('ssi', $title, $content, $date);
$stmt->execute();