我有一個腳本,當我提交它時,我提交了一些輸入到MySQL數據庫的字段,現在它成功通過,但是如果其中一個字段有撇號,它永遠不會被插入到數據庫中。我可以修改什麼來實現這個功能?插入MySQL時的撇號問題
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')");
這就是爲什麼'mysql_query'函數應該可能從PHP中刪除。只要有可能,幾乎**總是**,請使用[預先準備的語句](http://php.net/manual/en/pdo.prepared-statements.php)。您沒有任何理由將用戶輸入的文本直接放入SQL中。 – tadman 2012-01-13 16:30:29
核心開發團隊拼命想要殺死mysql/mysqli,但網絡上有**這麼多**可怕的過時「教程」,它會破壞**這麼多**現有的垃圾代碼。 – rdlowrey 2012-01-13 16:32:15
我一直在這裏更頻繁地觀看MySQL標籤,我非常害怕人們對SQL轉義的無知。這就像他們甚至懶得提及它。在一個公正的世界中,編寫這樣的代碼將會是一場**大罪行**。 – tadman 2012-01-13 16:34:04