このコードを 2 ステップ フォームの 1 つで使用しています。ここでは、ステップ 2.php でフォーム入力を検証してセッションに保存し、ステップ 3.php ページでセッションからフォーム入力を取得しています。また、最終段階で検証コードを再実行する必要があるため、それらを $formData 配列に割り当てています。
$name = $formData["name"] = $string->formatInput($session->getSession("mechanic_buy_name"), 1);
$garage_name = $formData["garage_name"] = $string->formatInput($session->getSession("mechanic_buy_garage_name"), 1, "None");
$address = $formData["address"] = $string->formatInput($session->getSession("mechanic_buy_address"), 1);
$string->formatInput("STRING GOES HERE" , 1) は、addslashes 関数を追加するラッパー関数です。
ASWT の Tech をガレージ名に入力するとします。
このSQLクエリを使用して、レコードをデータベースに保存します
$sql = "INSERT INTO ". TABLE_MECHANICS ."";
$sql .= "(name, garage_name, address, town, county, postcode, mobile, landline, fax, email, website, services_other, start_date, duration, expiry_date, datecreated, datemodified) VALUES";
$sql .= "('$name', '$garage_name', '$address', '$town', '$county', '$postcode', '$mobile', '$landline', '$fax', '$email', '$website', '$services_other', '$start_date', '$duration', '$expiry_date', NOW(), NOW())";
$query = $mysql->query($sql);
しかし、phpmyadmin を介してデータベースを表示すると、引用符の前にエスケープ文字が表示されません
これは、garage_name が phpmyadmin ASWT で表示されているものです。
一方、addslashes ($string->formatInput(...)) が適用された後は、ASWT\'s\' のようになるはずです。
どこが間違っているのか、addslashes 関数が適用されない理由を教えてください。
この構文は正しいですか?
$name = $formData["name"] = $string->formatInput($session->getSession("mechanic_buy_name"), 1);
$name をエコーしてもエスケープ文字が表示されません。
どんな助けでも大歓迎です。