您好,欢迎访问一九零五行业门户网

PHP上传Excel并批量添加数据到pgsql的问题,期待高人解答!

下面这个代码的作用是上传excel并读取其中的数据,批量添加数据到pgsql数据库中,目前已成功实现上传并将数据读出来,但是在批量插入数据时出现错误(无法执行sql语句),但用输出的$sql的值的语句直接在pgadminiii中运行,又是成功的。哪位大神帮助看一下,不胜感激!
0) { echo return code: . $_files[file][error] .
; } else { if(move_uploaded_file($_files[file][tmp_name],xlstmp/ .$remotefilename)==1) { //上传成功并开始读取xls文件 $data = new spreadsheet_excel_reader(); $data->setoutputencoding('cp936'); $data->read(xlstmp/ .$remotefilename); $count=0; if($data->sheets[0]['numrows']>=2 && $data->sheets[0]['numcols']>=2) { for ($i = 2; $i sheets[0]['numrows']; $i++) { $s=; for ($j = 1; $j sheets[0]['numcols']; $j++) { if(strlen($data->sheets[0]['cells'][$i][$j])==0) break; $s.= $data->sheets[0]['cells'][$i][$j].|; } if(strlen($s)!=0) { $count++; $ss =explode('|',$s);//将关键词以空格分割到数组中。 // $sql=insert into zikao_tzd_kecheng(\kc_dm\,\kc_mc\) values('1111','ok');//执行上面这句都是可以的 $sql=insert into zikao_tzd_kecheng(\kc_dm\,\kc_mc\) values('.$ss[0].','.$ss[1].');//执行上面这句就不成功。 // $sql=insert into zikao_tzd_kecheng(\kc_dm\,\kc_mc\) values('.$data->sheets[0]['cells'][$i][1].','.$data->sheets[0]['cells'][$i][2].'); echo $sql.
; $result = $pg -> query($sql); } } echo $count.records; } else { echo xls's rows or columns is so few.; } } else echo upload failed.; } }else { echo invalid file; } $pg ->close();?>
回复讨论(解决方案) 再加30分,期待高人解答!
没有错误信息吗
错误提示就是:the database query fail
可我直接用调试时输出的$sql的值直接在pgadminiii中执行,又是成功插入数据的。
如:insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('3708','中国近现代史纲要')
但values中使用从excel可读出来的变量又不行。
// $sql=insert into zikao_tzd_kecheng(\kc_dm\,\kc_mc\) values('1111','ok');
//执行上面这句都是可以成功插入的
$sql=insert into zikao_tzd_kecheng(\kc_dm\,\kc_mc\) values('.$ss[0].','.$ss[1].');
//但上面这句用变量$ss[0],$ss[1]就插入不成功,提示the database query fail
echo pg_last_error($pg); 看看
echo $sql;
贴出结果看看
这是echo $sql的结果。
insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('6029','工作分析')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('3708','中国近现代史纲要')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0112','计算机基础')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程3')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程4')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程5')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程6')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程7')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程8')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程9')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程10')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程11')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程12')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程13')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程14')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程15')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程16')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程17')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程18')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程19')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程20')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程21')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程22')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程23')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程24')
the database query fail.insert into zikao_tzd_kecheng(kc_dm,kc_mc) values('0003','测试课程25')
the database query fail.
conn.php内容
connect();if(!$pg) { echo 无法连接到postgresql数据库!;exit;} ?>
pgdb.php内容
host = $host; $this->port = $port; $this->user = $user; $this->passwd = $passwd; $this->db = $db; } /* 连接postgresql数据库 */ function connect(){ try{ $this->linkid = @pg_connect(host=$this->host port=$this->port dbname=$this->db user=$this->user password=$this->passwd); if (! $this->linkid) throw new exception(could not connect to postgresql server.); } catch (exception $e) { die($e->getmessage()); } } /* 执行数据库查询。 */ function query($query){ try{ $this->result = @pg_query($this->linkid,$query); if(! $this->result) throw new exception(the database query fail.); } catch (exception $e){ echo $e->getmessage(); } $this->querycount++; return $this->result; } /* 确定受查询所影响的行的总计。 */ function affectedrows(){ $count = @pg_affected_rows($this->linkid); return $count; } /* 确定查询返回的行的总计。 */ function numrows(){ $count = @pg_num_rows($this->result); return $count; } /* 将查询的结果行作为一个对象返回。 */ function fetchobject(){ $row = @pg_fetch_object($this->result); return $row; } /* 将查询的结果行作为一个索引数组返回。 */ function fetchrow(){ $row = @pg_fetch_row($this->result); return $row; } /* 将查询的结果行作为一个关联数组返回。 */ function fetcharray(){ $row = @pg_fetch_array($this->result); return $row; } /* 返回在这个对象的生存期内执行的查询总数。这不是必须的,但是您也许会感兴趣。 */ function numqueries(){ return $this->querycount; } function close() { @pg_close($this->linkid); }} ?>
你这个应该是页面编码的问题。中文可能乱码了。
mysql_query('set names utf8')
的确如lang11zi 所说,我把需要写入的字符串转化为 utf8就ok了。因为字符串是从 excel读出来的,默认是gb2312。
谢谢以上各位的解答。散分。
其它类似信息

推荐信息