如果使用$ _POST中的数据,SQLite UPDATE会提交空数据

时间:2012-10-24 08:30:17

标签: php sqlite post null

我正在尝试使用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%的时间,null值会在字段而不是$ _POST数据中更新($ sub3不是来自$ _POST )。

如果我对值进行硬编码,则可以正常工作。我在同一代码路径中也有一个insert语句(如果没有执行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,它就无法工作。

我错过了什么?还有什么我可以尝试的吗?

1 个答案:

答案 0 :(得分:0)

打印POST变量并检查它是否具有正确的数据。

print_r($_POST);

编辑: 更改查询。

//$params = array($visible, $link, $title, $post, $month, $day, $year, $sub3);
$query = "UPDATE posts SET visible = '$visible', link = '$link', title = '$title', entries = '$entries', month = '$month', day = '$day', year = '$year' WHERE id = $id;  COMMIT;";

确保您拥有正确的$ id