Как мне вставить большой двоичный объект с использованием PDO в Codeiginter 3.0

#codeigniter #pdo #blob

#codeigniter #pdo #большой двоичный объект

Вопрос:

Я использую этот код…

 $sql = "INSERT INTO images (imgname,imgtype,imgwidth,imgheight,imgdata,imgthumb,status) VALUES (?,?,?,?,?,?,?)";
$stmt = $this->db->prepare($sql);
$stmt->bindParam(1, $name, PDO::PARAM_STR);
$stmt->bindParam(2, $type, PDO::PARAM_STR);
$stmt->bindParam(3, $width, PDO::PARAM_INT);
$stmt->bindParam(4, $height, PDO::PARAM_INT);
$stmt->bindParam(5, file_get_contents($url), PDO::PARAM_LOB);
$stmt->bindParam(6, file_get_contents($thumburl), PDO::PARAM_LOB);
$stmt->bindParam(7, '0', PDO::PARAM_INT);
$stmt->execute();
  

Но я получаю сообщение об ошибке:

Сообщение: вызов неопределенного метода CI_DB_pdo_mysql_driver::prepare()

Есть ли какой-либо другой способ вставить большой двоичный объект с использованием PDO в CodeIgniter 3.0? Кажется, все остальное отлично работает с помощником базы данных.

Комментарии:

1. Проблема (как сообщалось) заключается в том, что $this->db это не экземпляр класса PDO.

2. ОК. Я это понимаю. Но у вас есть ответ на вопрос?

Ответ №1:

Нашел его. Как говорит hjpotter92, $this-> db на самом деле не является объектом PDO. Но CodeIgniter действительно передает функции в PDO, если вы используете указатель conn_id PDO. Я заменил:

 $this->db->prepare($sql);
  

с

 $this->db->conn_id->prepare($sql);
  

И теперь все работает нормально.

Комментарии:

1. Это работает для меня, не могли бы вы объяснить, как на самом деле это работает?