+ -
当前位置:首页 → 问答吧 → pdo插入mysql text字段问题

pdo插入mysql text字段问题

时间:2011-10-14

来源:互联网

大家好,请教一个问题,谢谢:
我插入文件数据到mysql的表里面,其中表结构是这样的:
SELECT * FROM `newmapgis`.`ypt_mapmetafiles`;delimiter $$

CREATE TABLE `ypt_mapmetafiles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `filename` varchar(200) DEFAULT NULL,
  `body` text,
  `catid` int(11) DEFAULT NULL,
  `importdatetime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8$$

代码:
//这里是读取zip文件中的文件
  $buffer=zip_entry_read($zip_entry,zip_entry_filesize($zip_entry));

//查询是否存在同名文件
$sql='select id from ypt_mapmetafiles where filename=:filename and catid=:catid';
$sth = $db->prepare ( $sql );
$sth->execute(array(':filename'=>$itemname,':catid'=>$catid));
$fileid=$sth->fetchColumn();

//如果存在则更新否则添加
if($fileid){
$sql = 'update ypt_mapmetafiles set filename=:filename,body=:body,importdatetime=now(),catid=:catid where id='.$fileid;
}else{
$sql = 'insert into ypt_mapmetafiles(filename,body,importdatetime,catid) values(:filename,:body,now(),:catid)';
}
$sth->closeCursor();

$sth = $db->prepare ( $sql );
$sth->bindParam(':body', $buffer);
$sth->bindParam (':filename' , $itemname);
$sth->bindParam (':catid' , $catid);

$r=$sth->execute();
$sth->closeCursor();

if(!$r){
echo '错误:'.$itemname;
}
$Result ['success'] = true;

但是发现body字段是空的,其他都正常,也不报错
希望大家帮忙看下

作者: hydream   发布时间: 2011-10-14

$buffer=zip_entry_read($zip_entry,zip_entry_filesize($zip_entry));

echo $buffer;
看是否读取到值了。

作者: ohmygirl   发布时间: 2011-10-14

这个我在zend studio通过xdebug调试的时候,是看到$buffer里面有值得

作者: hydream   发布时间: 2011-10-14

对了,补充数据库连接:

function conn(){
$user='root';
$pass='';

try {
  $db = new PDO('mysql:host=localhost;dbname=newmapgis', $user, $pass);
  return $db;
} catch (PDOException $e) {
  print "Error!: " . $e->getMessage() . "<br/>";
  die();
}
}

function Connect(){
$db=conn();
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $db->exec("set character set 'utf8'");
  $db->exec("set names 'utf8'");
  return $db;
}

作者: hydream   发布时间: 2011-10-14

用echo打印也是有值得

作者: hydream   发布时间: 2011-10-14

看下$buffer的长度是否超出了text的最大长度,应该是65535个字符吧。

作者: ohmygirl   发布时间: 2011-10-14

搞定了。。。。

作者: hydream   发布时间: 2011-10-14

长度没有超过,我改成blob字段就可以了

作者: hydream   发布时间: 2011-10-14

相关阅读 更多