2016-12-15 49 views
0
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.'&nbsp;<a class="button [secondary success alert]" style="padding:5px;" href="update-cart.php?action=add&id='.$product_id.'">+</a>&nbsp;<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>&nbsp;<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>'; 
    } 

存在其中它指出特定路線錯誤的PHP

警告一行:mysqli_query()預計參數1是在C中給出的mysqli,字符串:\ XAMPP \ htdocs中....上線147

我只是不知道該怎麼做,在那裏看了很多餡餅,但沒有幫助。如果你們中的任何一位能幫我弄清楚問題出在哪裏,我將不勝感激。

+0

[文檔與工作示例(http://php.net/mysqli_query) - 你不能只是爲其提供'$ db_name',它是數據庫的*字符串*名稱。你必須像這樣創建一個'mysqli'的實例:'$ mysqli = new mysqli(「localhost」,「my_user」,「my_password」,「world」);'。再次,[該文件有一個簡單的例子,將爲你工作](http://php.net/mysqli_query) – WEBjuju

+0

你的下一個錯誤將因爲'。$ product_id'不連接,你已經在引號..任何關閉封裝或者將其扔進去。這也對SQL注入開放。 – chris85

+0

檢查連接對象。否則向我們展示'數據庫連接'。發佈時可以輸入虛擬值。 –

回答

0

這就是從這裏

$result = mysqli_query($db_name,$do); 

當你逝去的數據庫的名字來了。

功能mysqli_query有兩個requeired參數:

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); 
0

問題出在變量$db_name。我在代碼中看不到它來自哪裏,但它必須是mysqli

根據該php manual,第一個參數需要是「由mysqli_connect返回的鏈路標識符()或mysqli_init()」

所以必須創建一個mysqli對象與這些功能中的一個,然後將該對象傳遞給mysqli_query()

並提醒您:您應該使用準備好的語句。否則,生成不安全的代碼太容易了。

+0

$ currency ='$'; $ db_username ='root'; $ db_password =''; $ db_name ='ecommerce'; $ db_host ='localhost'; $ mysqli = new mysqli($ db_host,$ db_username,$ db_password,$ db_name); global $ db_name; –

+0

仍然不起作用 –