php 图片以二进制流的形式存入数据库,如何用sp转换?

#1 小双

我使用的代码:
head_picture.php页面,
 
$query="select * from zc_commodity where tb_commodity_id=".$recid;
    $result=mysql_query($query);
    if(!$result) die("error: mysql query");
    $num=mysql_num_rows($result);
    if($num<1) die("error: no this recorder");     
    $data = mysql_result($result,0,"tb_commodity_picture");
    mysql_close($conn);
    echo $data;
?>


smarty模板调用页面index.html:


conn.php页面:
 
$conn=mysql_connect("localhost","root","root") or die('连接失败:' . mysql_error());
if(mysql_select_db("shopzc",$conn))
  echo "";
  else
  echo ('数据库选择失败:' . mysql_error());
mysql_query("set names gb2312");
?>


上面是可以显示的,如何使用sp把上面head_picture.php页面里的代码放在controller文件夹里的main.php页面里面:
 
class main extends spController
{
function img(){
  $recid = $this->spArgs('tb_commodity_id');
  $result = $gb->find(array('tb_commodity_id'=>$recid),"tb_commodity_id DESC",NULL) or $this->error('未定义的图片');
  $num=count($result);
  if($num<1) die("error: no this recorder");     
  $this->data = $result['tb_commodity_picture'];
  
  $this->display("index.html");
}
}
这个是我写的,没有做出来,不明白上面的data如何输出?

2010-07-22 18:16:04

#2 小双

我又衍生出了一个问题,如果是其它程序没有用smarty模板,想跟speedphp框架共用链库代码(conn.php),如何做?

2010-07-22 18:35:58

#3 jake

1. 保存图片等数据到数据库,其实很简单,首先数据库字段要能放得下,比如说用text字段。然后通过 $data = file_get_contents('图片');获得图片的数据,然后直接将$data变量入库即可。不过要注意的是,在输出的时候,需要发送图片的header到浏览器,否则浏览器不能识别图片。
2. 如果希望从其他地方引入数据库链接资源(也就是mysql_connect获取到的句柄),可以对spModel的_db->$conn变量进行赋值。spModel的_db变量是驱动类的实例,而_db的$conn变量是mysql_connect返回的资源句柄。当然,这一切最好在spModel实例化之前就开始进行,比如说在未调用任何spModel的子类之前,或者是spRun之前。

2010-07-22 21:02:54