シリアル化された文字列をSQLに保存しようとしていますが、引用符が原因でシリアル化を解除する際に問題が発生します。
たとえば、文字列は「te'st」です。シリアル化した後、次のようになります。
s:5:"te'st";
しかし、それをSQLに保存するには、スラッシュを追加する必要があります。
serialize(addslashes($string))
この後、MySQLデータベースに
s:6:"te'st";
そしてこれが問題です。s:6は、6つのシンボル文字列があることを意味しますが、「te'st」は5つしかないため、シリアル化を解除しようとするとエラーが発生します。
それを解決する方法は?htmlspecialcharsとmysql_real_escape_stringを試しました
アップデート:
mysql_real_escape_stringの使用方法
mysql_query("INSERT INTO `table`(`string`) VALUES ('" . serialize(array('iId' =>$aSqlResult['typeID'], 'sName' => mysql_real_escape_string($sScanResultLine))) . "')");