PHP/MySQL/PDO--无法更新默认值或零值
在图书表中,某些行可能没有完整的数据。但是,管理员可以编辑行。在这种情况下,管理员通过添加一个没有发布年份的发布年份(插入的年份为空)来更新行 由于某些原因,此PHP/MySQL/PDO--无法更新默认值或零值,php,mysql,pdo,Php,Mysql,Pdo,在图书表中,某些行可能没有完整的数据。但是,管理员可以编辑行。在这种情况下,管理员通过添加一个没有发布年份的发布年份(插入的年份为空)来更新行 由于某些原因,此INT(4)列上的MySQL/PDO更新不起作用 字段year_pub不为空 代码如下: $year_pub = filter_var($_POST['year'], FILTER_SANITIZE_NUMBER_INT); $id_book = filter_var($_POST[‘id’], FILTER_SANITIZE_NUMBE
INT(4)
列上的MySQL/PDO更新不起作用
字段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();
以下是一些结果:
[年份发布字段具有默认值] 如果默认值为0 更新不起作用 如果默认值为1 更新不起作用 但是,第二次尝试更新确实有效
[年份发布字段没有默认值](“占位符”值) 如果
占位符值为0
更新不起作用
如果占位符值为1
更新作品
这是非常奇怪的行为。我以前从未见过这种情况。有人能解释一下这里可能发生了什么吗?示例代码不准确。实际查询是:
$query = "UPDATE table_books SET year=:year WHERE id_book=:id_book";
该专栏被命名为“年”。将列名更改为“year_pub”,就像它应该被命名一样,解决了这个问题。我注意到的第一件事是,由于不同的引号,您的代码出现了奇怪的颜色,我会先研究一下。好的,我想我现在在代码块中看到了它。Post键“年”以红色突出显示。现在我意识到我的错误了。数据库中的实际字段只是'year',这是一个MySQL关键字。它是从RTF中剪切和粘贴的。这很奇怪。@Devyear
不是保留的。颜色是因为标准报价的智能报价。(R)
表示保留条款。@Dev RTF文件(即写字板或MS Word)没有使用正确的双引号字符。在这种情况下,您应该删除该问题,因为该问题是打字错误,而不是编程问题。