1. 程式人生 > >php提交表單內容有單引號,mysql執行時遇見錯誤的解決方法。

php提交表單內容有單引號,mysql執行時遇見錯誤的解決方法。

首先看一下問題所在。

"INSERT INTO tg_article(
                                        tg_username,
                                        tg_type,
                                        tg_title,
                                        tg_content,
                                        tg_date
                                      )
                                VALUES(       
                                        '{$_clean['username']}',
                                        '{$_clean['type']}',
                                        '{$_clean['title']}',
                                        '{$_clean['content']}',
                                        NOW()                                                                              
                                       )                     
  "


大家會發現黨要提交的內容還有單引號的時候,value是裡面就會出現單引號套單引號,這是明顯的錯誤,這也是在網站開發中經常遇到的現象和易忽略的問題。接下來給大家講怎麼解決。

1. 對於magic_quotes_gpc=on的情況,

我們可以不對輸入和輸出資料庫的字串資料作

addslashes()和stripslashes()的操作,資料也會正常顯示。
如果此時你對輸入的資料作了addslashes()處理,
那麼在輸出的時候就必須使用stripslashes()去掉多餘的反斜槓。
2. 對於magic_quotes_gpc=off 的情況
必須使用addslashes()對輸入資料進行處理,但並不需要使用stripslashes()格式化輸出


因為addslashes()並未將反斜槓一起寫入資料庫,只是幫助mysql完成了sql語句的執行。

建立一個轉義函式,並對內容轉義

function _mysql_string($_string){
    //get_magic_quotes_gpc()如果開啟狀態就不用轉義,否則要z轉義
  //  if(!GPC){
       // return @mysql_escape_string($_string);
   // }else{ 
        //return $_string;
   // }
    if(GPC){
        if(is_array($_string)){
            foreach ($_string as $_key=>$_value){
                $_string[$_key] = _mysql_string($_value);
                $_string[$_key] = addslashes($_string[$_key]);
            }
        }else{
            $_string = @mysql_real_escape_string($_string);
        }
    }      	
        return $_string;
}
 //接受內容
        $_clean = array();
        $_clean['username'] = $_COOKIE['username'];
        $_clean['type'] = $_POST['type'];
        $_clean['title'] = $_POST['title'];
        $_clean['content'] = $_POST['content'];
        _mysql_string($_clean);


相關推薦

php提交內容引號mysql執行遇見錯誤解決方法

首先看一下問題所在。 "INSERT INTO tg_article(                                         tg_username,                                         tg_typ

laravel框架學習(三)win下php artisan tinker 測試資料無法執行報錯的解決方法

問題描述: 複製該路徑,在資源管理器的位址列中開啟,會看到 如下: Temp 往往是系統或者其他軟體生成的快取檔案或目錄 需要返回到上一級目錄Temp中,全選資料夾,刪除,提示不允許刪除的話,

PHP中if(isset($_POST['Submit']))是什麼意思php提交判斷 if($_POST[submit])與 if(isset($_POST[submit])) 的區別

isset -- 檢測變數是否設定 判斷post過來的資料是否被提交過來,if(isset($_POST["submit"]){ echo "提交過來了"; }else { echo "submit is no come~"; }   if(isset($_

PHP提交提交到其它頁面和提交到本身

二種提交方式,提交到其它頁面和提交到本身見程式碼: <!DOCTYPE html> <html> <title>表單提交開始</title>       &nb

PHP提交失敗後如何保留填寫的資訊

index.html模板檔案大內容: <html> <head> <title>jQuery Ajax 例項演示</title> </head> <script src="./js/jquery.js" ty

解決 php提交到當前頁面重新整理會重複提交 的問題

下午有一個朋友問我這個問題,其實解決辦法很簡單: 只需要在表單裡生成一個token(隨機字串),然後用個input裝起來,設定hidden。第一次post處理完資料後把token存入session,接下來每次post判斷一下token跟session中的一不一樣,一樣則說明

js的form提交url傳參數(包含+等特殊字符)的解決方法

字符 www. mit function form表單提交 sub win tno wiki 方法一:(偽裝form表單提交) linkredwin = function(A,B,C,D,E,F,G){ var formredwin = document.cr

jsp頁面提交controller接收亂碼數據庫亂碼等解決方法

ren ping redirect etc 打開數據庫 解決方法 ews web ext 1.web項目出現亂碼問題 做web項目的時候,多多少少會出現中文亂碼問題。 對於jsp頁面表單提交,controller接收亂碼,保存到數據庫中文亂碼等問題,統一給出幾種亂碼的解決

[Spring MVC] 提交日期轉換問題,比如可能導致封裝實體類400錯誤

new tac med tab mat -m bin Edito ack   三種格式的InitBinder @InitBinder//https://stackoverflow.com/questions/20616319/the-request-sent-by-the

MySQL已使用索引但查詢大資料結果慢的解決辦法

目前做的專案使用MySQL資料庫,其中有張表包含近1000萬條記錄,表結構如下: Field Type Comment id int(11) NOT NULL 主鍵(PK) year int(4) NULL

Java鄰接表示加權向圖附dijkstra最短路徑演算法

圖這種adt(abstract data type)及相關的演算法,之前一直是我未曾涉足過的領域。 主要是作為一個小測試,在平常的工作中也用不著,就算面試,至今也未曾碰到過相關考題。 但是前幾天,原公司的小美女談到面試過程中就碰到一題: 從A到B,有多條路線,要找出最短路

C# WinForm 程式例項執行再次執行啟用前一個例項

一個簡單的小程式,演示了winform程式如何執行單例項。當有例項執行時,再次單擊,會啟用第一個例項。 附主要原始碼: Program.cs using System; using System.Collections.Generic; using System.Linq

型別化(Type)的DataSet (使用強型別的DataSet定義的資料庫一定要主鍵否則不能使用)

使用強型別的DataSet的時候一定要設定主鍵,假如說你在拖一個表到資料集來建立強型別DataSet的時候 而那個表又沒有設定主鍵 那麼你只有在資料集裡把你拖入的那個表刪除,重新拖入。或者點選你拖入到資料集的那個表,把滑鼠移動到 "表名+TableAdapter"欄 其實也

web_reg_save_param 左右邊界中引號正確寫法

關聯相關指令碼:        <input type="hidden" name='did' id='did' value="415" /> 現在要通過關聯取得value裡面的值,如415; 所寫的指令碼1: web_reg_save_param("did",

水晶報表 Crystal Report 調用存儲過程出錯 找不到 解決方法

top app net amp lean local database sep asp.net 用 CrystalReportViewer1 控件在asp.net的網頁上顯示報表,假設做報表時調用數據表數據的方式調用是能夠成功的。但報表是用存儲過程獲

編譯安裝PHP 遇到問題解決方法.

tro 沒有 stat xmlrpc 編譯安裝 錯誤 clas jpeg libiconv 編譯安裝PHP時出現下面的錯誤代碼: error 2 checking for pkg-config... /usr/bin/pkg-config configure: erro

SpringMVC提交數據遭遇基礎類型和日期類型報400錯誤解決方法

筆記 運行 inpu 遭遇 imp public 增加 試用 too 使用SpringMVC開發的時候,頁面如果有日期格式的數據,後臺接受也是java.util.Date,則報告400錯誤 。下面是解決方案的演示示例: 這個是實體類,裏面createDate就是ja

PHP編譯安裝常見錯誤解決辦法

containe -c libmcrypt led form vpx char win sta PHP編譯安裝時常見錯誤解決辦法 This article is post on https://coderwall.com/p/ggmpfa configur

解決php工具箱(phpStudy)Apache啟動成功MySql無法啟動的問題

php工具箱 mysql無法啟動 今天花了兩個多小時的時間給別人搗鼓php工具箱,自己都很驚訝。 由於xampp中的不太適合新手剛開始學php使用,所以我給她安裝了php工具箱,這是個可以切換版本的軟件,我很推薦,而且不需要配置! 不過很讓人頭疼的是Apache正常啟動,,MySql就是無法啟動,百度

網站內容不被百度收錄的原因反思及解決方法

網站優化 seo 網頁收錄 大發跡創業項目網有個網站百度已經沒有一個月收錄,站長也是著急,於是想著應該怎麽解決這個問題。其實網站出了問題,站長應該是最清楚的,所以不要急,仔細回想一下最近操作了什麽,然後一個一個去排查就可以找出問題所在,對癥下藥就ok了。比如我的這個網站,想要找出問題所在就很簡單。