【问题标题】:INSERT query produces "Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given"INSERT 查询产生“警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,给定布尔值”
【发布时间】:2013-11-08 17:22:52
【问题描述】:

我对收到以下消息的原因感到困惑:

mysqli_num_rows() 期望参数 1 为 mysqli_result,给定布尔值

这个问题与以前的查询不同,因为我的查询实际上正确执行(确实已将值输入到数据库中)。所以,我希望 MySQL 返回一个结果集而不是一个布尔值。

以下是我的功能:

function join_main_newsletter($firstName = null, $email)
{
    global $dbc;
    $valuesEntered = "values entered";

    $insert = "INSERT INTO newsletter (first_name, email ) VALUES ('name', 'testemail@yahoo.com')";

    $R3 = mysqli_query($dbc, $insert) or trigger_error("Query Failed! SQL: $sql - Error: " . mysqli_error(db_conx), E_USER_ERROR);
    if (mysqli_num_rows($R3) == 1) {
        return $valueentered;
    } else {
    }
}

这是错误的部分结果:

[valuesEntered] => values entered
    [insert] => INSERT INTO newsletter (first_name, email ) 
                  VALUES ('name', 'testemail@yahoo.com')
    [R3] => 1

【问题讨论】:

  • 这是不同的。我的查询有效;即值正在输入数据库。所以,我的查询没有错误

标签: php mysqli insert


【解决方案1】:

使用mysqli_affected_rows() - 受最后一个 INSERT、UPDATE、REPLACE 或 DELETE 查询影响的行数。

【讨论】:

  • 什么可能是什么原因?
  • 这应该是什么结果?如果 mysqli_num_rows() 首先失败,因为它是 INSERT,而不是 SELECT,那么您的代码将毫无帮助。
【解决方案2】:

mysqli_num_rows() 函数返回结果集中的行数。对于插入、更新和删除使用mysqli_affected_rows

【讨论】:

    【解决方案3】:
      mysql_num_rows ( resource $result )
    

    从结果集中检索行数。此命令仅对返回实际结果集的 SELECT 或 SHOW 等语句有效。要检索受 INSERT、UPDATE、REPLACE 或 DELETE 查询影响的行数,请使用 . mysql_affected_rows() 喜欢

    if(mysql_affected_rows()) 
        {
            return $valueentered ;
        }
        else
        {
            false; 
        }
    

    【讨论】:

      猜你喜欢
      • 2015-03-12
      • 2017-05-15
      • 2018-11-06
      • 1970-01-01
      • 2013-06-02
      • 2014-02-27
      • 1970-01-01
      • 2012-07-06
      相关资源
      最近更新 更多