MySql вставлять двоичные данные в БД без ошибок - PullRequest
1 голос
/ 26 сентября 2011

У меня проблема. Когда я делаю вставку, как это в php:

sql = "INSERT INTO mytable (id, value)
VALUES ('sds83','".$EncryptedString."')";

Когда я запускаю следующий запрос, иногда он работает, а иногда нет. Проблема в том, что иногда $ EncryptedString содержит такие символы: ')') что вызывает синтаксические ошибки. $ EncryptedString содержит двоичные данные, как я могу решить эту проблему?

Ответы [ 3 ]

2 голосов
/ 26 сентября 2011

Escape вашей зашифрованной строки

mysql-real-escape-string

mysql_real_escape_string () вызывает библиотечную функцию MySQL mysql_real_escape_string, которая добавляет обратные слэши к следующемусимволы: \ x00, \ n, \ r, \, ', "и \ x1a.

См. StripSlashes

1 голос
/ 26 сентября 2011

Использовать PDO (или другой уровень базы данных), который поддерживает подготовленные операторы.

Когда вы используете параметры запроса вместо выполнения необработанного SQL, вы получаете повышение скорости (база данных должна планировать и оптимизировать только для одного запроса), и все данные, которые вы записываете в свои параметры, немедленно и полностью изолируются от самого запроса.

Удивительно, сколько людей не имеют этого на месте! Возьмите на себя инициативу и обновите свой код.

0 голосов
/ 26 сентября 2011

Вам нужно сбежать от вашего $EncryptedString. В зависимости от типа используемого объекта / функций подключения MySQL это может выглядеть следующим образом:

$sql = "
    INSERT INTO mytable (id, value)
    VALUES ('sds83','" . mysql_real_escape_string($EncryptedString) . "')";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...