【发布时间】:2018-10-02 14:53:12
【问题描述】:
我遇到了一个错误
代码如下:
<?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_num_rows() 期望参数 1 为 mysqli_result,布尔值在第 58 行的 C:\xampp\htdocs\Dream Pizza\add_order.php 中给出
连接数据库时出错!
【问题讨论】:
-
使用
mysqli_error()获得更好的错误信息。 -> php.net/manual/en/mysqli.error.php -
您需要从
$dbserv="localhost:3306";中删除端口 从 PHP 文档 "mysqli::__construct ([ string $host参数 "host ..." Can be either a host name or an IP address." 看起来不像手册说可以将端口添加到主机字符串. -> php.net/manual/en/mysqli.construct.php 除了在 mysqi 构造函数中还有一个单独的端口参数。