2016-07-14 20 views
0

私はPHPを学び始めましたが、どこかで立ち往生しました。以下は私が行ったことを示すための私のPHPコードです。私はadd to cartの部分をstoring IP address and product idとしましたが、それでも値はデータベースを保存していません。コードの何が間違っているかを確認するには?私はまた、cho mysqli_error($db)を使ってチェックしましたが、表示していません。データベーステーブルの値がmysqlデータベースに保存されていません

<?php 

$db = mysqli_connect("localhost","root","","ecommerce"); 


function getIp() { 
    $ip = $_SERVER['REMOTE_ADDR']; 

    if (!empty($_SERVER['HTTP_CLIENT_IP'])) { 
     $ip = $_SERVER['HTTP_CLIENT_IP']; 
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
     $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
    } 

    return $ip; 
} 


function cart(){ 

    if (isset($_GET['add_cart'])) { 

     global $db; 

     $ip = getIp(); 
     $pro_id = $_GET['add_cart']; 
     $check_pro = "select * from cart where ip_add='$ip' AND p_id='$pro_id'"; 

     $run_check = mysqli_query($db, $check_pro); 

     if (mysqli_num_rows($run_check)>0) { 
      echo ""; 
     } else { 
      $insert_pro = "insert into cart (p_id,ip_add) values ('$pro_id','$ip')"; 

      $run_pro = mysqli_query($db , $insert_pro); 
      echo "<script>window.open('index.php','_self')</script>"; 
     } 
    } 
} 
?> 

でも追加画像:以下

コードです。

enter image description here

+0

を使用しますか? – Zac

+1

'p_id'は自動インクリメントされているので、挿入クエリでは使用されません!!すでにあなたのテーブルに入っているので!! – Saty

+0

ブラウザでクエリを印刷し、そのクエリをphpmyadmin ...に貼り付け、エラーが発生したかどうか確認してください。 –

答えて

1

あなたは、私はこれはおそらく、あなた、あなたのエラーが表示されます

function cart(){ 

    if (isset($_GET['add_cart'])) { 

     global $db; 

     $ip = getIp(); 
     $pro_id = $_GET['add_cart']; 
     $check_pro = "select * from cart where ip_add='$ip' AND p_id='$pro_id'"; 

     $run_check = mysqli_query($db, $check_pro); 

     // test query worked and report error if it failed 
     if ($run_check === false) { 
      echo mysqli_error($db); 
      exit; 
     } 

     if (mysqli_num_rows($run_check)>0) { 
      echo ""; 
     } else { 
      $insert_pro = "insert into cart 
            (p_id,ip_add) 
          values ('$pro_id','$ip')"; 

      $run_pro = mysqli_query($db , $insert_pro); 

      // test query worked and report error if it failed 
      if ($run_pro === false) { 
       echo mysqli_error($db); 
       exit; 
      } 

      echo "<script>window.open('index.php','_self')</script>"; 
     } 
    } 
} 

を追加した2枚の小切手を参照してください、ほとんどすべてmysqli_ APIコールの状態を確認する必要があります。 あなたのスクリプトがSQL Injection Attack の危険にさらされているLittle Bobby Tablesでも if you are escaping inputs, its not safe! に何が起こったのかを見てください:

あなたがすでにちなみに

を使用しているキーを持つ行を挿入している可能性がありますあなたがmysqli_errorを入れているprepared statement and parameterized statements

+0

フィールド「数量」をクリックした後shwoingされるデフォルト値が表示されている必要はありません。私はノーありtutroialに数量フィールドを見ましたデフォルトvしかし、働いている。 –

+0

qtyのDEFAULT値をnullに変更しましたが、それは先に進むのが適切ですか? –

+0

私はそれが0のqtyよりも0のqtyを持つようにするために、デフォルトの0のために行くでしょう – RiggsFolly

関連する問題