2013-01-01 116 views
-1

我使用PHP和MySQL作爲主要語言,而TinyMCE爲所見即所得功能。問題是我每次嘗試在文本編輯器中放置一個啓動文件時都會收到MySQL錯誤。錯誤似乎是這樣的:撇號錯誤

執行查詢時發生錯誤。 請通知網絡開發者這個錯誤。

注意:您的SQL語法有錯誤;檢查手冊, 對應於您的MySQL服務器版本的正確語法使用 附近的肯定是一個程序給你。

國際語言學院馬尼拉(」在行1

聲明使我這套代碼:

function ExecuteQuery($strquery){ 
    $rs = mysql_query("$strquery") or 
     die('<br><br>An error occured upon executing query.<br>Please notify the web developer about this error.<br><br>NOTE: '.mysql_error()); 
    return $rs; 
} 

,但我似乎無法理解這個問題需要一些幫助這裏。非常感謝。

+1

請發佈您嘗試的查詢。 –

+4

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – ThiefMaster

+0

我們如何幫助您找到沒有查詢的語法錯誤? – sdespont

回答

3

您看到錯誤,因爲撇號在Mysql中有特殊含義。正如伊恩說你必須使用mysql_real_escape_string$strquery

不使用轉義會導致嚴重的SQL注入安全問題。 http://www.unixwiz.net/techtips/sql-injection.html

function ExecuteQuery($strquery) { 
    $rs = mysql_query(mysql_real_escape_string($strquery)) or 
     die('<br><br>An error occured upon executing query.<br>Please notify the web developer about this error.<br><br>NOTE: '.mysql_error()); 
    return $rs; 
} 
1

我想你的查詢是這樣的...

INSERT INTO table VALUES ('blah blah blah'); 

現在,想象一下,當你試圖插入文本包含單引號/撇號會發生什麼......

INSERT INTO table VALUES ('This won't work.'); 

查詢參數的內容有任何單引號破壞了你的代碼。您需要在查詢參數上使用mysql_real_escape_string

更好的是,使用PDO或MySQLi與準備好的語句。

0

您的查詢看起來是這樣的:

INSERT INTO table (textfield) VALUES ('your editor value'); 

現在,你可能無法逃脫你的輸入值,所以在你的文字撇號將打破查詢

INSERT INTO table (textfield) VALUES ('your ' editor value with apostrophe'); 

Read this瞭解也有近距離看紅色方塊