2011-11-08 26 views
0

私は現在、顧客がデータベースに持ってきたアイテムを送信するショッピングカートを持っていますが、今は会員でなければならないログインシステムが含まれています商品を購入する前に私はセッションでログインしたユーザーを保持しているので、注文が行われた後でもセッション変数をデータベースに送信しようとしています。私は次のコードにそれを変更したショッピングカートの詳細をPHPを使用してMySQLデータベースに挿入

session_start(); 
?> 
<?php 
if(!isset($_SESSION["username"])) 
{ 
    header("Location: shoppinglogin.php"); 
} 
?> 

<? 
    include("includes/db.php"); 
    include("includes/functions.php"); 

    if($_REQUEST['command']=='update'){ 
     $name=$_REQUEST['name']; 
     $email=$_REQUEST['email']; 
     $address=$_REQUEST['address']; 
     $phone=$_REQUEST['phone']; 

     $result=mysql_query("insert into customers values('','$name','$email','$address','$phone')"); 
     $customerid=mysql_insert_id(); 
     $date=date('Y-m-d'); 
     $result=mysql_query("insert into order values('','$date','$customerid')"); 
     $orderid=mysql_insert_id(); 

     $max=count($_SESSION['cart']); 
     for($i=0;$i<$max;$i++){ 
      $pid=$_SESSION['cart'][$i]['productid']; 
      $q=$_SESSION['cart'][$i]['qty']; 
      $price=get_price($pid); 
      mysql_query("insert into order_detail values ($orderid,$pid,$q,$price)"); 
     } 
     die('Thank You! your order has been placed!'); 
     session_unset(); 
    } 
?> 

<?php 

session_start(); 
?> 
<?php 
if(!isset($_SESSION["username"])) 
{ 
    header("Location: shoppinglogin.php"); 
} 
?> 

<? 
    include("includes/db.php"); 
    include("includes/functions.php"); 

    if($_REQUEST['command']=='update'){ 
     $name=$_REQUEST['name']; 
     $email=$_REQUEST['email']; 
     $address=$_REQUEST['address']; 
     $phone=$_REQUEST['phone']; 

$max=count($_SESSION['cart']); 
     for($i=0;$i<$max;$i++){ 
      $orderid=mysql_insert_id(); 
      $pid=$_SESSION['cart'][$i]['productid']; 
      $q=$_SESSION['cart'][$i]['qty']; 
      $price=get_price($pid); 
      $date=date('Y-m-d'); 
      $user=$_SESSION['username']; 
      mysql_query("insert into order values ($orderid,$pid,$q,$price,$date,$user)"); 
     } 
     die('Thank You! your order has been placed!'); 
     session_unset(); 
    } 
?> 

上記のコードはない現時点では、私は、顧客、受注及びorder_detail(次のコードを参照)されている3つのテーブルを持っています注文表に何かを挿入してください。

おかげ

答えて

0

ええ。エラー処理を全く行わないデータベース操作。 DBクエリが成功したと仮定すると、このような状況に陥るだけです。何が問題なのかという手がかりはありません。

絶対に裸mininumで

、あなたのDB操作は次のようになります。少なくとも、クエリが失敗したことを示しています、そのトラックで死んでスクリプトを停止し、それが失敗した理由を説明します、と伝え

$sql = "... query goes here ..." 
$result = mysql_query($sql); 
if ($result === FALSE) { 
    die("Query failed!" . mysql_error() . $sql); 
} 

あなたはその質問が何だったか

また、コードはとなります。SQL injectionの攻撃が広がっています。これは、明らかに電子商取引の設定であることに特に悪いことです。私はあなたがこれを読んで穴を塞ぐチャンスを得るまで、すぐにこのシステムを止めることをお勧めします。

0

はちょうどするmysql_query関数の後or die(mysql_error())を試してみてください。それはおそらくあなたに問題の詳細情報を与えるでしょう...

0

クエリ「」は、それぞれの値に囲まれている場合に確認してください、

これと交換してください:

insert into order values ('$orderid','$pid','$q','$price','$date','$user')

を、表orderではない他のフィールドを持っていないことを確認してください指定されていない場合はnull:

insert into order (order_id, product_id, qty, price, order_date, order_user) values ('$orderid','$pid','$q','$price','$date','$user')

関連する問題