Не вставляя правильные значения в базу данных MySQL

Я испытываю некоторые затруднения с помощью 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 на сервере. Я заставил их обновлять его, и это, кажется, хорошо работает теперь. Спасибо все, для помощи!

9
задан Eric Bannatyne 21 February 2010 в 08:15
поделиться

2 ответа

Попробуйте следующее:

$stmt = $this->db->prepare("INSERT INTO events (title, content, date) VALUES ('?', '?', '?')");
0
ответ дан 3 November 2019 в 09:30
поделиться

Либо используйте отладчик (например, xdebug + netbeans в качестве frontend), либо добавьте больше отладочного вывода.

echo "<pre>Debug: $stmt->bind_param('ssi', $title, $content, $date);\n</pre>";
$stmt->bind_param('ssi', $title, $content, $date);
$stmt->execute();
1
ответ дан 3 November 2019 в 09:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: