0

このエラーが発生し続けます:

Query1 が失敗しました: SQL 構文にエラーがあります。' "d41d8cd98f00b204e9800998ecf8427e" "d41d8cd98f00b204e9800998ecf8427e", "d41d8cd' 行 1 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

これは私が使用しているコードです:

 <?php

     $payment = $_GET['payment'];
     if($payment){
include("connection.php");
$CardHolder = md5($_POST["CardHolder"]);
$CardType = md5($_POST["CardType"]);
$CardNumber = md5($_POST["CardNumber"]);
$SecurityCode = md5($_POST["SecurityCode"]);
$ExpiryDate = md5($_POST["ExpiryDate"]);
$PurchaseID = $_SESSION['purchaseid'];
$Email = $_SESSION['user'];

$sql = "INSERT INTO Payment (CardHolder, CardType, CardNumber, SecurityCode, ExpiryDate, PurchaseID, Email) VALUES (\"$CardHolder\", \"$CardType\", , \"$CardNumber\" \"$SecurityCode\", \"$ExpiryDate\", \"$PurchaseID\", \"$Email\")";
$result = mysqli_query($con, $sql) or die('Query1 failed: ' . mysqli_error($con));;

if($result){
    echo "<p>Your Payment has been Accepted. You are now being redirected to the to the HomePage.</p>
      <meta http-equiv=\"refresh\" content=\"1;URL=index.php\" />";

     } else {
         echo "<p>Payment Failed, Please try again later.</p>";
     }
}

      ?>

何が間違っているのかわかりません。ご支援いただきありがとうございます。

編集:提供された回答を使用した後、クエリ1が失敗しました:列カウントが行1の値カウントと一致しません。自動インクリメントのPaymentIDがあることをお知らせします。

4

4 に答える 4

2

コンマが間違った場所にあると思います (2 は CardType の後に、0 は CardNumber の後にあります)。

\"$CardType\", , \"$CardNumber\" \"$SecurityCode\",

そうは言っても、SQL インジェクション攻撃にさらされており、準備されたステートメントとバインディング パラメーターを使用して挿入を行うより良い方法があります。これを出発点として使用します。

于 2012-12-11T22:10:38.413 に答える
1

値のない余分な列があるようです:

$sql = "INSERT ... VALUES (\"$CardHolder\", \"$CardType\", , \"$CardNumber\"
                                                          ^

代わりに一重引用符を使用することをお勧めします。

$sql = "INSERT INTO Payment (CardHolder, CardType, CardNumber, SecurityCode, ExpiryDate, PurchaseID, Email) VALUES ('$CardHolder', '$CardType', '$CardNumber', '$SecurityCode', '$ExpiryDate', '$PurchaseID', '$Email')";
于 2012-12-11T22:07:17.740 に答える
0

後に 2 つのカンマがありますCardType

于 2012-12-11T22:07:23.870 に答える
0

これに置き換えます:

$sql = "INSERT INTO Payment (CardHolder, CardType, CardNumber, SecurityCode, ExpiryDate, PurchaseID, Email) VALUES (\"$CardHolder\", \"$CardType\", \"$CardNumber\", \"$SecurityCode\", \"$ExpiryDate\", \"$PurchaseID\", \"$Email\")";
于 2012-12-11T22:07:59.140 に答える