#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. Это работает для меня, не могли бы вы объяснить, как на самом деле это работает?