【问题标题】:Problems with my prepared statement update我准备好的声明更新的问题
【发布时间】:2009-11-17 11:02:00
【问题描述】:
$query = "UPDATE kids_entry SET entries=? WHERE parentsemail=?";
$stmt1 = mysqli_prepare($connection, $query);
mysqli_stmt_bind_param($stmt1, 'is',$entries,$parentsemail);
mysqli_execute($stmt1);
if(mysqli_stmt_affected_rows($stmt1) != 1)
    die("issueasdass"); 
mysqli_stmt_close($stmt1);

上面的代码在另一个页面上对我有用,但我似乎无法让它在这里工作。在另一页上,要更新的集合是硬编码的,不是动态的,所以这可能是它对我不起作用的原因。有人可以告诉我我做错了什么吗?谢谢

【问题讨论】:

  • $entries 的类型是什么?您传递给 bind 语句的“是”意味着您的参数将是一个整数和一个字符串。如果 #entries 不是字符串,这可能会导致您的一些问题。
  • entries 是一个整数,parentemail 是一个字符串

标签: php mysqli prepared-statement


【解决方案1】:

条目是否可能与数据库中已有的值相同?如果没有任何变化,我认为*_affected_rows 不会返回 1。 'parentsemail' 是否有可能有超过 1 个条目?所以也许mysqli_stmt_affected_rows 正在返回类似 2 的东西?与其检查 1,不如让我们知道 mysql_stmt_affected_rows 正在返回什么。例如,来自文档:

大于零的整数表示 受影响的行数或 取回。零表示没有 更新的记录 UPDATE/DELETE 语句,无行 匹配查询中的 WHERE 子句 或者还没有查询 执行。 -1 表示查询 已返回错误。

【讨论】:

    【解决方案2】:

    问题似乎已自行解决。什么都没有改变,但现在它可以工作了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 2019-08-04
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多