0

ページに表示するために MySQL テーブルからデータを取得しています。スクリプトは情報を表示していますが、私の表では通常の引用符が別のタイプの引用符として挿入されています。( ’ )Microsoft Word 2010 で何かを入力すると( “ ” )、このように自動的に書式設定されます。Microsoft Word 2010 は、表のほとんどのエントリを入力するために使用されていました。だから私の推測では、それらは特殊文字です。しかし、実際の一重引用符を含むフィールドの表示をテストする( ' )( " " )、mysql_fetch_row を受け取るたびに、パラメーター 1 がリソースであると見なされ、ブール値が指定されたエラーが発生します。これは私が使用するコードです:

$result = mysql_query("SELECT `question` FROM {$db_table_alt}");

while($field = mysql_fetch_row($result)) {
foreach($field as $fields) {

//build a unique section ID based on the ID that the Question belongs to
$uid = mysql_query("SELECT `id` FROM `questions` WHERE `question` LIKE '%$fields%'");
while($uidfield = mysql_fetch_row($uid)) {

しかし、この行を使用するたび に、実際の引用符$fields = mysql_real_escape_string(stripslashes($fields));を 含むフィールドが表示されますが、引用符の前にスラッシュが付いています。誰かがこれに対する解決策を見つけるのを手伝ってくれますか?

4

2 に答える 2

-1

行が返されなかったか、SQLにエラーが発生したmysql_fetch_row()ことを意味するブール値について不平を言っている場合(どちらかがわかります)。mysql_querymysql_error()

返されたデータの引用符の前にバックスラッシュがある場合、それらはデータベースに入れられています。magic_quotes有効になっているようです。問題に対する時代遅れで壊れた解決策であるため、本当にそれをオフにしたいのです。

また、文字エンコーディングについても学ぶ必要があると思います。デフォルトの MySQL インストールは UTF8 ではなく、おそらく ISO-8859-15 になるでしょう。Word は、同じではない Windows-1252 でテキストを書くのが好きでした。そして、データベースと通信するブラウザ、ウェブサイト、その他のものを使用すると、さらに複雑になります。PhpMyAdmin は UTF8 で実行しようとするため、UTF8 でない場合、データテーブルに変換されます。これは、「スマート クォート」を探すクエリにも影響します。

于 2012-04-13T01:41:22.730 に答える
-1

ここには 2 つの異なる問題があるようです。

$resultブール値に評価されます。これは、生成されたクエリにエラーがあることを意味します ( SELECT question FROM {$db_table_alt})。そのクエリをエコーアウトして手動で実行してみてください。によって指定されたテーブル/ビュー{$db_table_alt}が存在しない可能性があります。

2 つ目は、文字列のエスケープの問題です。データベースで引用符がエスケープされることを期待しています-mysql_real_escape_stringクエリで使用しても、返された結果がエスケープされているかどうかは変わりません。

また、データベース内のデータがスラッシュでエスケープされている場合は、マジック クォートとそれに対する対処法を確認する必要があります: マジック クォートに関する PHP ドキュメント。DB からデータを引き出すときに、文字列のエスケープを行う必要はありません。

于 2012-04-13T01:44:46.400 に答える