【问题标题】:Not inserting correct values into MySQL database未将正确的值插入 MySQL 数据库
【发布时间】:2010-02-21 00:54:00
【问题描述】:

我在使用 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)不兼容。我让他们更新它,现在它似乎工作正常。 谢谢大家的帮助!

【问题讨论】:

  • 数据从何而来?您可以使用echo 进行测试输出吗?表的结构是什么?
  • 使用echo 查看值是否正确可以正常工作。有没有办法查看所有参数的预处理语句?
  • 你能举例说明echo 的输出给你什么吗?至于准备好的statemtent,你用的是哪个引擎?
  • 对不起,我不太清楚你所说的引擎是什么意思(我对此有点菜鸟)。
  • 好吧,503964161971-08-07 03:00:16 -0400,您是否可能不正确地添加/减去时间以获得此值 - 可能没有为 time() 提供参数?至于文本,你确定你的编码在数据库中是正确的吗?

标签: php mysql insert mysqli


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 2012-04-14
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 2018-01-27
      相关资源
      最近更新 更多