[英]specific line error php
global $db_name;
echo '<p><h3>Your Shopping Cart</h3></p>';
if(isset($_SESSION['cart'])) {
$total = 0;
echo '<table>';
echo '<tr>';
echo '<th>Code</th>';
echo '<th>Name</th>';
echo '<th>Quantity</th>';
echo '<th>Cost</th>';
echo '</tr>';
foreach($_SESSION['cart'] as $product_id => $quantity) {
///the problem is with these two line underneath
//Warning: mysqli_query() expects parameter 1 to be mysqli, string given in C:\xampp\htdocs\.... on line 147
$do= "SELECT product_code, product_name, product_desc, qty, price FROM products WHERE id = .$product_id";
$result = mysqli_query($db_name,$do);
if($result){
while($obj = $result->fetch_object()) {
$cost = $obj->price * $quantity; //work out the line cost
$total = $total + $cost; //add to the total cost
echo '<tr>';
echo '<td>'.$obj->product_code.'</td>';
echo '<td>'.$obj->product_name.'</td>';
echo '<td>'.$quantity.' <a class="button [secondary success alert]" style="padding:5px;" href="update-cart.php?action=add&id='.$product_id.'">+</a> <a class="button alert" style="padding:5px;" href="update-cart.php?action=remove&id='.$product_id.'">-</a></td>';
echo '<td>'.$cost.'</td>';
echo '</tr>';
}
}
}
echo '<tr>';
echo '<td colspan="3" align="right">Total</td>';
echo '<td>'.$total.'</td>';
echo '</tr>';
echo '<tr>';
echo '<td colspan="4" align="right"><a href="update-cart.php?action=empty" class="button alert">Empty Cart</a> <a href="products.php" class="button [secondary success alert]">Continue Shopping</a>';
if(isset($_SESSION['username'])) {
echo '<a href="orders-update.php"><button style="float:right;">COD</button></a>';
}
else {
echo '<a href="login.php"><button style="float:right;">Login</button></a>';
}
echo '</td>';
echo '</tr>';
echo '</table>';
}
有一條線指出
警告:mysqli_query()期望參數1為mysqli,在第147行的C:\\ xampp \\ htdocs ....中給出的字符串。
我只是想不出該怎么辦,看了很多tut,但無濟於事。 如果你們中的任何一個可以幫助我找出問題所在,我將有義務。
問題出在變量$db_name
。 我在您的代碼中看不到它的來源,但它必須是mysqli
類型。
根據php手冊 ,第一個參數需要為“ mysqli_connect()或mysqli_init()返回的鏈接標識符”
因此,您必須使用以下函數之一創建mysqli
對象,然后將該對象傳遞給mysqli_query()
。
附帶說明:您應該使用准備好的語句。 否則,生成不安全的代碼太容易了。
這是從這里來的
$result = mysqli_query($db_name,$do);
在傳遞數據庫名稱時 。
函數mysqli_query
具有兩個需要的參數:
mysqli_query( connection, query );
連接是要執行查詢的連接,如果沒有連接,該方法將不知道如何處理查詢。
摘自您的評論之一:
$db_username = 'root';
$db_password = '';
$db_name = 'ecommerce';
$db_host = 'localhost';
$mysqli = new mysqli($db_host, $db_username, $db_password,$db_name);
您現在需要使用
$result = mysqli_query( $mysqli , $do );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.