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

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

最佳答案

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

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

关于php - 没有将正确的值插入 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2304371/

相关文章:

mysql - 缓慢的 MySQL 插入

excel - 如何使用 AddOLEObject 将 Excel 图表插入 Word

sqlite - 计算 sqlite INSERT SELECT 的行数

如果需要很长时间才能返回,php ajax 调用不会返回任何内容

php - 如何将 6+31 个数字字符塞入 22 个字母数字字符?

mysql - 如何使用sql查询将同一字段分组在一个字段下

php - 使用 mysql 返回 2 个日期之间的特定元素

php - 使用 VichUploaderBundle 将图像列表设置为实体

javascript - jQuery - 将数组部分映射到 HTML

php - Fullcalendar MySQL 插入不起作用