在书籍表中,某些行可能没有完整的数据。但是,管理员可以编辑行。在这种情况下,管理员通过添加没有的发布年份(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
更新工作
这是非常奇怪的行为。我以前从未见过这个。有人可以解释这里可能发生的事情吗?
答案 0 :(得分:-1)
示例代码不准确。实际的查询是:
$query = "UPDATE table_books SET year=:year WHERE id_book=:id_book";
该专栏已命名为“年”。将列名更改为' year_pub',就像应该已经命名一样,修复了问题。