0

カスタム バイナリ形式で作成されたログ ファイルがあります。このログ ファイルはサーバーにアップロードされ、PHP はそれを MySQL データベースに挿入します。

$tmpName = $_FILES['file']['tmp_name'];
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$query = "INSERT INTO device_log (dID, deviceLog) VALUES ( '$res1', '$content')";

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '««»»Qì™úX' at line 1しかし、SQL の内容に問題があり、エラーが発生することがあるため、これが常に機能するとは限りません。

のようなものでデータをエスケープする必要があることを読みましたmysql_real_escape_stringが、これは最初のデータを台無しにしてしまいます。つまり、元に戻すことができなくなります。そのようなブロブを挿入する正しい方法は何ですか?

4

1 に答える 1

1

データベースに挿入する前にデータを base64 エンコードすると、問題が軽減される場合があります (データを読み取るときに base64 デコードする必要があります)。

于 2013-07-22T03:14:23.910 に答える