私はファイル名とその他の情報を持つテーブルを持っています。私は次のクエリを実行すると:php mysqlの結果バックスラッシュが削除されました
select * from `documentinfo` WHERE `num`='40217'
を私は正しく結果を得る:
Array
(
[num] => 40217
[datetime] => 2011-09-15 15:22:07
[date] => 2011-09-15
[filename] => C:\redoak\DocumentsIN\Filer\8883894460_3044564210_07334802020001.mp3
)
私は、クエリを実行すると:
QUERY:`filename` REGEXP '^C:\\redoak\\DocumentsIN\\Filer'
を私が手:
Array
(
[num] => 35910
[datetime] => 2010-12-03 17:34:38
[date] => 2010-12-03
[filename] => c:
edoakDocumentsINFiler8883894460_3043926485_05863748580001.mp3
)
結果には\から削除されていることに注意してくださいフォルダ名。
は、私がこれを表示するには、両方で、次のPHPを使用:任意のnumのwhile ($row = array_change_key_case(mysql_fetch_assoc($webquery), CASE_LOWER))
{
print_r($row);
}
クエリが正常に動作します。正規表現クエリは、パターンにバックスラッシュが含まれていない場合に機能します。バックスラッシュが含まれていても動作しますが、テーブルから返されたデータにバックスラッシュがありません。クエリが正しいレコードを見つけたとしても。ありがとうオーク
問題はありますか?character_set_results regexpクエリは、デフォルトでは異なる文字セット結果を返しますか?
私は何が起こったかを確認するために文字セットを変更するには、次を試してみました:
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'") or die("ERROR SETTING CHAR SET");
echo '<pre>debug: encoding=', mysql_client_encoding(), '</pre>';
$webquery=mysql_query($query);
echo '<pre>debug: encoding=', mysql_client_encoding(), '</pre>';
常に私がmysql_set_charset('utf8');
を使用し、それがutf8
に変更が、結果は変わらなかったlatin1の
を示し、 。
'select * from documentinfo WHERE num = '35910''はどうですか? –
ファイル名にバックスラッシュが正しく返されます。 –