mysql_real_escape_stringが機能していません
-
16-10-2019 - |
質問
私のmysql_real_escape_stringは無視されています。それは私を殺しています。なぜなら、私は私が足りないのは小さなものだと感じているからです。
$ htmltext変数は、テキストがタグなどでHTMLとしてレンダリングされるTINYMCEエディターから来ています。
<?php
/*--------GLOBAL PROCEDURES--------*/
session_start();
require "../scr/config-data.php.inc";
mysql_connect($host,$username,$password) or die
("Could Not Connect".mysql_error());
mysql_select_db($db) or die ("Could Not Connect".mysql_error());
/*-----SEVERAL SELECT/INSERT QUERIES, ALL WORKING FINE-----*/
/*--------SPECIFIC PROCEDURES-------*/
if($_POST['submit']){
//Check that POS has been chosen
$htmlText = mysql_real_escape_string($_POST['cust']);
if($htmlText != ""){
mysql_query("INSERT INTO table VALUES(NULL, '$htmlText' )") or die(mysql_error());
}else{
$feedback = "Please Enter some text into the editor";
}
}
/*--------CLOSING PROCEDURES-------*/
mysql_close();
?>
奇妙なことは、変数名を変更するだけで動作するスクリプトから採用されていることです。 MySQL構文でエラーが発生しています。また、テキストでHTMLを逃れていないので、このエラーが発生しています。
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order VALUES(NULL, '
sfgafgafs
')' at line 1
解決
あなたから与えられたエラーメッセージからそれはあなたが使用しているように見えます order
たまたまaのテーブル名として mysqlは予約済みの単語.
バックティックでそれを囲みます。
他のヒント
mysql_real_escape_stringはHTMLを逃れません。それは x00、 n、 r、、 '、 "、 x1aのみを逃がします。
テーブルの名前は「注文」であってはなりません。なぜなら、それはSQL特別な単語であるためです。名前を変更するか、バックテックに入れていることを確認する必要があります。
私もその理由は、テーブル名が「注文」であるためだと思います。MySQLは、挿入クエリで注文句を使用しようとしているように、テーブル名を他のものに変更しようとしているからです。
リンク識別子が欠落しているように見えますか?
文字列mysql_real_escape_string(string $ unescaped_string [、resource $ link_identifier]))
所属していません StackOverflow