-6

私のSQLクエリは次のとおりです。

"INSERT INTO
    order customer_id = $customer_id
    , firstname = '".$firstname."'
    , lastname = '".$lastname."'
    , email = '".$email."'
    , telephone = '".$telephone."'
    , fax = '".$fax."'
    , ip = '".$ip."'
    , date_added = NOW()
    , date_modified = NOW()
";

エラーが発生します

注意: エラー: SQL 構文にエラーがあります。'order customer_id =1,firstname ='kuldeep',lastname ='pathak',email ='kuldeep.pat' at line 1 Error No: 1064 の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

4

5 に答える 5

3

SQL の書き方を理解していないようです。

$sql = 'INSERT INTO `order` (customer_id, firstname, blablabla) VALUES ('.$custormer_id.','.$firstname.','.$blablabla.')';

SQL に関するいくつかの基本的なチュートリアルをご覧ください。

于 2013-11-13T09:10:09.753 に答える
1
"INSERT INTO
    `order` SET customer_id = " . $customer_id . "
    , firstname = '".$firstname."'
    , lastname = '".$lastname."'
    , email = '".$email."'
    , telephone = '".$telephone."'
    , fax = '".$fax."'
    , ip = '".$ip."'
    , date_added = NOW()
    , date_modified = NOW()
";

大丈夫なはずです。ただし、データをエスケープすることを忘れないでください。

于 2013-11-13T09:13:52.537 に答える
0

準備済みステートメントを使用して、SQL インジェクションを回避します。

$custormer_id = "2000";
$firstname = "first name";
$etc = "some other values";
$mysqli = new mysqli('localhost', 'user', 'password', 'database');
$stmt = $mysqli->prepare("INSERT INTO order(customer_id, firstname, etc) VALUES (?, ?, ?)");
$stmt->bind_param('iss', $custormer_id, $firstname, $etc);
// first parameter is corresponding variable type of inserting values,eg i=interger, s=string
$stmt->execute();
$stmt->close();

http://php.net/manual/en/mysqli-stmt.bind-param.php

于 2013-11-13T12:36:38.833 に答える
0

データセットやアポストロフィなど、何らかの理由で問題を引き起こす可能性のあるフィールドにユーザーが送信した可能性がある場合は、次のようなものが必要です

$query = sprintf("INSERT INTO `table` (`Name`, `Email`, `AnotherField`) VALUES ('%s', '%s', '%s'",
mysql_real_escape_string( $_POST['Name'] ),
mysql_real_escape_string( $_POST['Email'] ),
mysql_real_escape_string( $_POST['AnotherField'] )
);

これにより、入力もサニタイズされます

于 2013-11-13T09:27:56.970 に答える
0

試す

"INSERT INTO `Order` (customer_id, firstname, lastname, email, telephone, fax, ip, date_added, date_modified)
VALUES ($customer_id, '$firstname', '$lastname', '$email', '$telephone', '$fax', '$ip', NOW(), NOW())"

正しい構文は次のとおりです。INSERT INTO tablename (columns) VALUES (values);

于 2013-11-13T09:12:47.930 に答える