PHP / MySQL / PDO - 无法更新默认值或零值

时间:2017-01-20 23:55:49

标签: php mysql pdo

在书籍表中,某些行可能没有完整的数据。但是,管理员可以编辑行。在这种情况下,管理员通过添加没有的发布年份(year_pub插入空白)来更新行。

INT(4)列上的MySQL / PDO UPDATE由于某种原因无效。

字段year_pub非空。

以下是代码:

$year_pub = filter_var($_POST['year'], FILTER_SANITIZE_NUMBER_INT);
$id_book = filter_var($_POST[‘id’], FILTER_SANITIZE_NUMBER_INT);

/*
*   DB CONNECT
*/

$query = "UPDATE table_books SET year_pub=:year_pub WHERE id_book=:id_book";
$stmt = $dbH->prepare($query);
$stmt->bindParam(":year_pub", $year_pub, PDO::PARAM_INT);
$stmt->bindParam(":id_book", $id_book, PDO::PARAM_INT);
$stmt->execute();

以下是一些结果:

[year_pub字段具有默认值]

如果默认值为0     更新不起作用。

如果默认值为1     更新不起作用。

但是,第二次UPDATE尝试确实有效。

[year_pub字段没有默认值](改为'占位符'值)

如果placeholder值为0     更新不起作用

如果placeholder值为1     更新工作

这是非常奇怪的行为。我以前从未见过这个。有人可以解释这里可能发生的事情吗?

1 个答案:

答案 0 :(得分:-1)

示例代码不准确。实际的查询是:

$query = "UPDATE table_books SET year=:year WHERE id_book=:id_book";

该专栏已命名为“年”。将列名更改为' year_pub',就像应该已经命名一样,修复了问题。