在不使用表单的情况下在Yii中插入blob对象

问题描述:

我需要一种不使用表单的方式将图像插入PostgreSQL数据库。我有一个文件夹,其中包含一组名为say aa.jpg,bb.jpg .... zz.jpg的图像。我也有一张表,其中包含名称aa,bb ... zz作为单独记录。在不使用表单的情况下在Yii中插入blob对象

现在我的问题是如何将这些图像插入数据库,而无需手动使用表单。手动插入有大量Yii tutorials,但没有解释如何以编程方式执行。

基本上我需要一种方法来在Yii中使用lo_import函数。问题是,图像是类型为OID和Yii中我插入的代码是在执行此如下

update('table_name', array(
       'image' => "lo_import('$image_path')", 
        ), 'column=:name', array(':name' => $name)); 

表中的列,它给了我下面的错误

CDbCommand failed to execute the SQL statement: SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type oid:

解决方案:好的,在@ Uday的回答中,我只是使用Yii中的函数直接执行sql语句。

Yii::app()->db->createCommand($Update_sql_command)->query(); 

如果还有更好的方法可以做到这一点, 谢谢!

你真的需要Yii吗?编写一个函数遍历所有使用get_file_contents()的图像来获取内容并将其存储到mysql中。

$imgContents = get_file_contents('file.Name') ; 
$sql = 'insert into table_name (blob_column) values("'. $imgContents.'")'; 
+0

我得到了那部分,我只是试图找出是否有任何我可以在Yii做到这一点。 PS:我已经编辑了一些我的问题。 – 2012-02-07 08:16:58

+0

好的,我现在已经标记为正确答案,因为它至少引导我回答问题。但我不知道这个解决方案是否正确。不管怎么说,多谢拉! – 2012-02-07 08:35:21