-2

行を挿入するはずの私のコード行は次のとおりです。

$query=mysqli_query($con,"insert * into orders 
values
(   ".$user_index.",".$order_date.",
    ".$_POST['item_number'].",".$_POST['price'].",
    ".$_POST['tax'].",'".$_POST['pay_method']."')
");

私の接続でもエラーは発生しません。また、確実に実行された後のコード行。PHP と MySQL で日付データ型を使用するのはこれが初めてですが、yyyymmdd の形式で日付を挿入しています。私はとてもイライラしています。私はオンラインでどこでもチェックしました。手伝ってくれませんか?

4

3 に答える 3

2

クエリの主な問題は*. それはINSERTステートメントには無効です。

次に、SQL インジェクションの脆弱性を回避するために、パラメータがバインドされた準備済みステートメントを使用する必要があります。また、何らかの形式のエラー チェックも使用する必要があります。例えば

$stmt = $con->prepare('INSERT INTO `orders` VALUES (?, ?, ?, ?, ?, ?)');
if ($stmt === false) {
    throw new Exception($con->error);
}
$stmt->bind_param('ssssss', $user_index, $order_date, $_POST['item_number'],
        $_POST['price'], $_POST['tax'], $_POST['pay_method']);

if (!$stmt->execute()) {
    throw new Exception($stmt->error);
}

参考までに、列のデータ型がわからないので、すべて文字列であると想定しました。

于 2013-08-07T06:55:13.387 に答える
0

まず、挿入クエリから * を削除する必要があります

次に、このような値を挿入する場合は、テーブル内の列の数が、ここに挿入する値の数と同じであることを確認してください (この場合は 6)。

于 2013-08-07T07:33:05.610 に答える
-5

あなたのクエリには多くの間違いがあります。適切な構文についてはドキュメントを参照してください

mysqli_query($con,"INSERT INTO table_name (field1,field2,field1) values ('value1','value2','value3')");

あなたの問題に特化して

$query=mysqli_query($con,"INSERT INTO orders (your fields Here ) VALUES (
    '".$user_index."', '".$order_date."', '".$_POST['item_number']."',
    '".$_POST['price']."', '".$_POST['tax']."', '".$_POST['pay_method']."'
    )");
于 2013-08-07T06:37:26.163 に答える