没有将正确的值插入MySQL数据库

时间:2010-02-21 00:54:01

标签: php mysql insert mysqli

我在使用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从表单中获取值。例如,如果,对于“标题”字段,我输入“asdf”:

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

看起来它只是与服务器上的MySql版本(4.something)不兼容。我让他们更新它,现在似乎工作正常。 谢谢大家的帮助!

2 个答案:

答案 0 :(得分:1)

使用调试器(例如xdebug + netbeans作为前端)或添加更多调试输出。

echo "<pre>Debug: $stmt->bind_param('ssi', $title, $content, $date);\n</pre>";
$stmt->bind_param('ssi', $title, $content, $date);
$stmt->execute();

答案 1 :(得分:0)

试试这个:

$stmt = $this->db->prepare("INSERT INTO events (title, content, date) VALUES ('?', '?', '?')");