【问题标题】:SQLite UPDATE submits null data if using data from $_POST如果使用来自 $_POST 的数据,SQLite UPDATE 提交空数据
【发布时间】:2012-10-14 06:31:35
【问题描述】:

我正在尝试使用 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,它就行不通。

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

【问题讨论】:

  • 您确定$_post 不为空吗?
  • 请注意,如果没有相应的BEGIN,则不允许使用COMMIT。此外,PHP 将只执行查询字符串中的第一个;-delimited 命令。
  • 是的,我相信提交是从我的旧旧测试中遗留下来的。此外,$_POST 不为空。我已经打印了很多次了。此外,使用相同初始化部分的 INSERT 路径也可以正常工作。

标签: php sqlite post null


【解决方案1】:

打印 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

【讨论】:

  • 这不是答案,而是评论
  • 对此我很抱歉。没有意识到。我要删除吗?
  • 这是 print_r($_POST) 就在 $stmt->execute($params); 之后数组([可见] => 可见 [标题] => 测试 [日期] => 2012 年 10 月 14 日 [猫] => 0 [发布] => 测试 [提交] => 保存)
  • 好。所以你从 POST 中得到了正确的值。您能在此处编写完整的 UPDATE 查询吗?我只是想看看你是否在使用引号时犯了任何错误。
  • 应该是这样,$query = "UPDATE 帖子 SET visible = ?,link = ?,title = ?,entry = ?,month = ?,day = ?,year = ? WHERE id = ? ;";
猜你喜欢
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
  • 2018-03-13
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
  • 2017-12-29
  • 2010-09-26
相关资源
最近更新 更多