2016-12-15 6 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_username = 'root'; $db_password = ''; $db_name = 'ecommerce'; $db_host = 'localhost'; $mysqli = new mysqli($db_host, $db_username, $db_password,$db_name); 

:あなたのコメントの1から撮影

あなたのデータベースの*文字列*名である '$ 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は2つのrequeiredのパラメータがあります。

mysqli_query(connection, query); 

接続は、クエリはそれなしで、実行されます接続され、この方法は、どのようなクエリを行うにはアイデアを持っていません。あなたがいないだけですることができます - あなたは今

$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 = 'eコマース'; $ db_host = 'localhost'; $ mysqli =新しいmysqli($ db_host、$ db_username、$ db_password、$ db_name); グローバル$ db_name; –

+0

はまだ動作しません –