我正在尝试使用 SQLite 更新 PHP 中的表。我的代码如下:
//Get params like this
$title = $_POST['title'];
...
$params = array($visible, $link, $title, $post, $month, $day, $year, $sub3);
$query = "UPDATE posts SET visible = ?, link = ?, title = ?, entries = ?, month = ?, day = ?, year = ? WHERE id = ?; COMMIT;";
$stmt = $db->prepare($query);
$result = $stmt->execute($params);
如果我从 $_POST 获取值,那么当它在语句上执行时,99% 的时间会在字段中更新空值而不是 $_POST 数据($sub3 不是来自 $_POST)。
如果我对这些值进行硬编码,它可以正常工作。我在同一代码路径中也有一个插入语句(首先检查它是否是新数据,如果不是则执行 INSERT)。每次插入都可以正常工作(来自 $_POST 的数据)。
此外,我为其他三个表提供了这样的代码,所有这些表都有效。这是唯一没有的表。与其他人相比,桌子的设置没有什么不同。
这个适用于另一张桌子:
$params = array($name, $username, $email, $level, $sub3);
$query = "UPDATE users SET name = ?, username = ?, email = ?, level = ? WHERE id = ?; COMMIT;";
$stmt = $db->prepare($query);
$result = $stmt->execute($params);
我已经尝试过 bindParam、bindValue 并在没有准备的情况下手动创建语句字符串,但只要它来自 $_POST,它就行不通。
我错过了什么?还有什么我可以尝试的吗?