1

PHPでいくつかの配列をシリアル化し、それらをmysql列に挿入していTEXTます。

一部のデータが正しく挿入されていません。挿入ステートメントの例、

$q = $this -> dbc -> prepare("INSERT INTO table (files) VALUES(?)");
$q -> execute(array(serialize($files)));

配列の値はstrlen65,000より小さいので、 mysql 列$filesへの最大挿入のために短くなりません。TEXT

serialized($files)挿入前のデータ、

string 'a:4:{s:4:"CD 1";a:20:{s:32:"01 - Can´t Talk To That Girl.mp3";i:4558470;s:22:"02 - No Pla // CONTINUES FOR SOME TIME

$filesデータベースから取得した値、

a:4:{s:4:"CD 1";a:20:{s:32:"01 - Can

文字で短くカットされているようですが´、PDO についての私の理解は、準備されたクエリのすべての文字を適切にエスケープするということでしたか?

私のPDO接続が次のように設定されていることに注意してくださいUTF-8

どうすればこれを防ぐことができますか?

ありがとう

編集

UTF-8これは、PDOがこのように動作する理由についてのアイデアへの接続を設定したためであることを確認できますか?

4

2 に答える 2

1

PHP の「´」バッククォート文字は、system("バッククォート間のテキスト") のショートカットです。

マニュアルを見る

適切に引用またはエスケープされていることを確認する必要があります。

于 2012-06-13T05:03:45.573 に答える
0

文字エンコーディングのうさぎの穴の奥深くまで行かないようにしています。文字列が UTF-8 であることを確認してください:

$q = $this -> dbc -> prepare("INSERT INTO table (files) VALUES(?)");
$q -> execute( array( utf8_encode( serialize( $files ) ) ) );
于 2012-06-13T02:47:07.490 に答える