mysqli\u num\u rows返回false,但数据被添加到数据库中

3duebb1j  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(329)

这个问题在这里已经有答案了

mysql\u fetch\u array()/mysql\u fetch\u assoc()/mysql\u fetch\u row()/mysql\u num\u rows等…期望参数1是资源(31个答案)
两年前关门了。
我出错了
代码如下:

<?php

//db connection

$dbserv="localhost:3306";
$dbuser="root";
$dbpass="firepower";
$dbname="account_data";
$db_connect=new mysqli($dbserv, $dbuser, $dbpass, $dbname);

if($db_connect->connect_errno){
    die("Error trying to connect to database");
}

session_start();

if(isset($_SESSION['current_page'])){
  $prev_page=$_SESSION['current_page'];
  $_SESSION['current_page'] = basename($_SERVER['PHP_SELF']);
}
else{
  $prev_page='';
}

if(!isset($_SESSION['email'])){
  header('location:'.'index.php?_rdr');
  die();
}

$limit=$_SESSION['limit'];
$index=1;
$first=true;
$products_ordered='';

while($index<=$limit){
  if(isset($_POST[$index]) && $first==true){
    $products_ordered.=$_POST[$index].' x Pizza '.$_SESSION['prod_name'][$index];
    $first=false;
  }
  else if(isset($_POST[$index]) && $first==false){
    $products_ordered.=', '.$_POST[$index].' x Pizza '.$_SESSION['prod_name'][$index];
  }
  $index++;
}

//insert order into db

$user_email=$_SESSION['email'];
$total_price=$_SESSION['order_price'];

$query="INSERT INTO orders (email, products_ordered, total_price) VALUES (?, ?, ?)";
$sql_sec=$db_connect->prepare($query);
$sql_sec->bind_param("ssi", $user_email, $products_ordered, $total_price);
$sql_sec->execute();
$result=$sql_sec->get_result();

if(mysqli_num_rows($result)){
  exit("Order added successfully!");
}
else{
  exit("Error connecting to database!");
}

?>

这是如此奇怪,因为数据被正确地添加到我的数据库和其他时候我使用相同的代码(用于用户注册)它没有任何问题。。。我检查了所有的东西,找不到问题。

$query="INSERT INTO orders (email, products_ordered, total_price) VALUES (?, ?, ?)";
$sql_sec=$db_connect->prepare($query);
$sql_sec->bind_param("ssi", $user_email, $products_ordered, $total_price);
$sql_sec->execute();
$result=$sql_sec->get_result();

if(mysqli_num_rows($result)){
  exit("Order added successfully!");
}
else{
  exit("Error connecting to database!");
}

我得到的错误是:

警告:mysqli \u num \u rows()期望参数1是mysqli \u result,在第58行的c:\xampp\htdocs\dream pizza\add \u order.php中给出布尔值

连接到数据库时出错!

vi4fp9gy

vi4fp9gy1#

get_result() 功能(重点):
对于成功的select查询返回结果集,对于其他dml查询或失败时返回false。
你在执行一个 INSERT 查询,所以 get_result() 会回来的 false .
相反,您应该使用 mysqli_stmt_* 函数(或直接访问属性)以从 $sql_sec 直接声明:

if(mysqli_stmt_affected_rows($sql_sec)){
// or:
if($sql_sec->affected_rows) {

请注意,您需要检查 affected_rows 财产,而不是 num_rows 财产。原因是 num_rows 返回结果集中的行数。你不是在选择一个结果集,而是在插入一组新的数据。这意味着您实际上对插入的行数感兴趣,它存储在 affected_rows 财产。

相关问题