プリペアドステートメントを使用する
彼らが行うことは、最初にデータのプレースホルダーを含むクエリのバージョンを送信することです。クエリが検証され、準備されます。成功した場合は、データベースが準備されたクエリに安全に挿入する値を送信できます。
3つのオプションがあります:
MySQLi拡張機能
$stmt = $mysli->prepare('INSERT INTO costumer (costumer_ID, first_name, last_name, birth_date, adress, city, state, postal_code, country, phone, email_client,username, password, Credit_Card, Credit_CardType)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?');
$stmt->bindParam('issssssssssssss', $_POST['costumer_ID'], ..., $_POST['Credit_CardType']);
$stmt->execute();
PDO拡張機能
// use native prepared statements if supported
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$stmt = $pdo->prepare('INSERT INTO costumer (costumer_ID, first_name, last_name, birth_date, adress, city, state, postal_code, country, phone, email_client,username, password, Credit_Card, Credit_CardType)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?');
$stmt->bindParam(1, $_POST['costumer_ID'], PDO::PARAM_INT);
...
$stmt->bindParam(15, $_POST['Credit_CardType']);
$stmt->execute();
任意の拡張機能を介した未加工のクエリ
他の2つの方法の方がはるかに優れているため、例を示すつもりはありません。