我有一個簡單的調查頁面,我試圖做。除了在我對調查頁面的評論中使用單引號時,一切運行良好。當我對它的單引號發表評論時,數據庫查詢不會插入到數據庫中。MYSQL轉義字符串執行
在Googleing之後,我想我必須在將字符串插入到數據庫之前將其轉義。在插入數據庫之前,我使用mysqli_real_escape_string來轉義字符串,但這似乎沒有幫助。
這裏是我的代碼,將用戶的意見爲DB(未顯示安全$ CON)
mysqli_real_escape_string($con,$_POST['question_1']);
mysqli_real_escape_string($con,$_POST['question_2']);
mysqli_real_escape_string($con,$_POST['question_3']);
mysqli_real_escape_string($con,$_POST['question_4']);
mysqli_real_escape_string($con,$_POST['question_5']);
mysqli_query($con, "INSERT INTO feedback (question_1, question_2, question_3, question_4, question_5) VALUES ('$_POST[question_1]', '$_POST[question_2]', '$_POST[question_3]', '$_POST[question_4]', '$_POST[question_5]')");
同樣,當註釋包含一個單引號這只是發生。有什麼建議麼?我是否錯誤地脫離了字符串?
處理的變量分配給它第一'$ Q1 = mysqli_real_escape_string($ CON,$ _ POST [ 'question_1']);'然後執行'VALUES(' 「$ Q1。」 ')'等等,因爲你現在在做的是'VALUES'('$ _POST [question_1]','是沒有意義的,你也可以使用'stripslashes()',或者使用[prepared statements](http: /www.php.net/manual/en/mysqli.quickstart.prepared-statements.php)並完成它,不需要使用附加函數 – 2015-03-19 03:08:27
我會避免使用'stripslashes()',因爲它往往會遺漏一些情況下,事情不是SQL安全的。我從來沒有逃脫函數無法返回SQL安全(不要與安全性安全混淆)字符串 – Machavity 2015-03-19 03:30:54
@Machavity條帶允許有O'Malley寫入數據庫確切如圖所示,而不是奧馬利。 – 2015-03-19 03:32:16