Не вставляя правильные значения в базу данных MySQL - PullRequest
9 голосов
/ 21 февраля 2010

У меня возникли проблемы с использованием MySQLi для вставки значений в базу данных.Я не получаю никаких ошибок, но вводимые значения не являются правильными вообще.Одно из полей TEXT всегда пусто, а другое всегда имеет значение «ý».Поле 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.Например, если в поле «title» я введу «asdf»:

$stmt->bind_param('ssi', $title, $content, $date);
$title = $_POST['title'];
echo $title; // echoes "asdf"

Похоже, что это была просто несовместимость с версией MySql (4.something) на сервере,Я получил их, чтобы обновить его, и, кажется, теперь работает нормально.Спасибо всем за помощь!

Ответы [ 2 ]

1 голос
/ 21 февраля 2010

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

<code>echo "<pre>Debug: $stmt->bind_param('ssi', $title, $content, $date);\n
"; $ stmt-> bind_param ('ssi', $ title, $ content, $ date); $ Stmt-> Execute ();
0 голосов
/ 22 февраля 2010

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

$stmt = $this->db->prepare("INSERT INTO events (title, content, date) VALUES ('?', '?', '?')");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...