【问题标题】:PHP affected_rows returns negative 1 (-1)PHP 影响行返回负 1 (-1)
【发布时间】:2014-11-12 11:10:03
【问题描述】:

这很奇怪,查询执行得很好并将数据插入到表中,但我受影响的行显示在负数而不是 1。有人知道为什么会这样吗?

connect.php:

<?php
 error_reporting(0);
 $db = new mysqli('localhost', 'root', 'pass', 'db');
 ?>

这里是主要代码:

<?php
 include 'connect.php';
 include 'blowfish.php';

 if($_POST['email'] == true)
 {
     if($db -> connect_errno)
     {
         echo "Could not connect to the database, please try again later...";
     }
     else
     {
         $email = $_POST['email'];

         $query = "SELECT id FROM users WHERE email = ?";
         $statmnt = $db -> prepare($query);
         $statmnt-> bind_param("s",$email);
         $statmnt-> execute();
         $statmnt-> bind_result($result);
         $statmnt-> fetch();
         $statmnt-> reset();
         if($result)
         {
             $id = $result;
             $result = "";

             $randomString = generateRandomString(50); // Generate random string

             $query = "UPDATE users SET emailString = ? WHERE id =?";
             $statmnt= $db -> prepare($query);
             $statmnt-> bind_param("si",$randomString,$id);
             $statmnt-> execute();
             $statmnt-> bind_result($result);
             $statmnt-> fetch();
             $statmnt-> reset();

             $test = $db -> affected_rows;
             echo $test;
         }
         else
         {
             echo "That Email Address is not registered...";
         }
     }
 }
 else
 {
     echo "No Email received...";
 }

 ?>

$test 返回“-1”

【问题讨论】:

  • "大于零的整数表示受影响或检索到的行数。零表示没有为 UPDATE 语句更新记录,没有行匹配查询中的 WHERE 子句或没有查询已执行。-1 表示查询返回错误。” (Source)
  • 您希望从UPDATE 查询中得到什么样的结果以及为什么要绑定它?

标签: php mysqli rows-affected


【解决方案1】:

在调用reset()close() 函数之前,您应该获得affected_rows$statmnt

【讨论】:

    猜你喜欢
    • 2015-04-15
    • 2016-10-07
    • 2013-06-06
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2018-08-28
    • 1970-01-01
    相关资源
    最近更新 更多