Какой тип данных параметров PDO я должен использовать для mysql blob? - PullRequest
0 голосов
/ 23 сентября 2019

В одной из моих таблиц БД у меня есть пара столбцов, хранящих зашифрованный текст как BLOB.

До сих пор в моих подготовленных запросах PDO я связывал значения без указания какого-либо типа данных PDO, что-то вроде этого:

$sql->bindParam(':enc_txt', $enc_txt);

Все работает, но мне было интересно, будет ли лучше (и возможно) также указать тип параметра.

Должен ли я использовать PDO :: PARAM_STR?Или, может быть, PDO :: PARAM_LOB?

Кроме того, что произойдет, если я не укажу какой-либо тип параметра?По умолчанию используется PARAM_STR или он пытается автоматически определить тип?

Ответы [ 3 ]

2 голосов
/ 23 сентября 2019

Ну, на все можно ответить со страницы документации

PDO :: PARAM_LOB требуется ресурс указателя файла , хотя я сомневаюсь, что вы собираетесь сохранить свой текств файл только для хранения его в базе данных.

Второй вопрос также answerable : PDO :: PARAM_STR является типом по умолчанию, если он опущен.

1 голос
/ 23 сентября 2019

Оба должны работать.PDO::PARAM_LOB позволяет передавать поток, но все равно отлично работает со строкой.PDO::PARAM_STR также выполняет свою работу.

Я лично использую PDO::PARAM_STR.

Дополнительная информация здесь .Это может зависеть от способа передачи данных и системы вашей базы данных.TL; DR: Oracle обрабатывает вещи немного по-другому.

Для вашего второго вопроса, быстрый взгляд на документ здесь указывает, что PDO::PARAM_STR является значением по умолчанию.Там нет типа угадать.

0 голосов
/ 23 сентября 2019

В соответствии с документацией , по умолчанию $data_type является PDO::PARAM_STR:

enter image description here

Так что вы, вероятно, должны объявитьэто должно быть PDO::PARAM_LOB для данных BLOB-объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...