-1

私はPHPとMySQLをメイン言語として使用していますが、TinyMCEはWYSIWYG機能を使用しています。問題は、テキストエディタにアポストフを配置しようとするたびにMySQLエラーが発生することです。エラーは次のようになります。

クエリの実行中にエラーが発生しました。このエラーについては、Web開発者に通知してください。

注: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;
}

しかし、私は問題を理解できないようです。ここで助けが必要です。どうもありがとう。

4

3 に答える 3

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;
}
于 2013-01-01T12:04:59.833 に答える
1

あなたのクエリはこのようなものだと思います...

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

ここで、挿入しようとしているテキストに一重引用符/アポストロフィが含まれているとどうなるか想像してみてください...

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

クエリパラメータの内容に一重引用符が含まれていると、コードが壊れています。mysql_real_escape_stringクエリパラメータで使用する必要があります。

さらに良いことに、プリペアドステートメントでPDOまたはMySQLiを使用します。

于 2013-01-01T11:59:04.743 に答える
0

クエリは次のようになります。

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

さて、おそらく入力値をエスケープしないので、テキストのアポストロフィはクエリを壊します

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

エスケープについて学ぶためにこれを読んでください、また赤いボックスをよく見てください

于 2013-01-01T12:04:42.253 に答える