MySQLデータベースに入力する一部のフィールドを送信するスクリプトがありますが、これを送信すると正常に処理されますが、フィールドの1つにアポストロフィが含まれているとデータベースに挿入されることはありません。これを動作させるには何が変更できますか?アポストロフィの問題
if ($_POST) {
$name = trim($_POST['your_name']);
$email = trim($_POST['your_email']);
$answers = $_POST['answers'];
$i = 0;
foreach ($answers as $a) {
if (trim($a))
$i++;
}
if ($name && $email && $i >= 40) {
$array = array();
$q = mysql_query("select * from fields");
while($f = mysql_fetch_array($q))
$array[$f['label']] = $answers[$f['ID']];
$array = serialize($array);
$time = time();
$ip = $_SERVER['REMOTE_ADDR'];
$token = md5($time);
$result = mysql_query("insert into data (submit_name, submit_email, submit_data, submit_confirm, submit_time, submit_ip, submit_token)
values ('$name', '$email', '$array', '0', '$time', '$ip', '$token')");
これはPHPからmysql_query関数が削除されている可能性があるためです。できるだけ**常に** **常に、[prepared statements](http://php.net/manual/en/pdo.prepared-statements.php)を使用してください。あなたは、ユーザーが入力したテキストをSQLに直接置く必要はありません。 – tadman
コアデベロッパーチームは必然的にmysql/mysqliを殺したいと思っていますが、**かなり多くの古くなった**チュートリアルがネット上にあり、**既存のゴミコードを壊すでしょう**。 – rdlowrey
私はここでMySQLタグをより頻繁に見てきました。私は盲目的に無知な人々がSQLをエスケープする方法について、本当に恐ろしいです。それは彼らがそれを言うことを気にしないようなものです。ただの世界では、このようなコードを書くことは**資本犯罪**です。 – tadman