Table of Contents
回复讨论(解决方案)
Home Backend Development PHP Tutorial PHP上传Excel并批量添加数据到pgsql的问题,期待高人解答!

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

Jun 23, 2016 pm 02:10 PM

下面这个代码的作用是上传Excel并读取其中的数据,批量添加数据到pgsql数据库中,目前已成功实现上传并将数据读出来,但是在批量插入数据时出现错误(无法执行SQL语句),但用输出的$sql的值的语句直接在pgAdminIII中运行,又是成功的。哪位大神帮助看一下,不胜感激!

<?phpinclude_once("reader.php");include_once("conn.php");$remotefilename= date("Ymdhis").".xls";if (substr($_FILES["file"]["name"],-4)==".xls"){  if ($_FILES["file"]["error"] > 0)    {    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";    }  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 <= $data->sheets[0]['numRows']; $i++)			{			$s="";			for ($j = 1; $j <= $data->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."<br>";                 $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();?>
Copy after login


回复讨论(解决方案)

再加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内容

<?phpinclude 'class/PGDB.php';  $PG = new pgsql("localhost", "5432", "name", "user", "pass");  $PG->connect();if(!$PG)  {  echo "无法连接到PostGreSQL数据库!";exit;} ?>
Copy after login

PGDB.php内容
<?php  class pgsql {  private $linkid; // PostgreSQL连接标识符  private $host; // PostgreSQL服务器主机  private $port; // PostgreSQL服务器主机端口  private $user; // PostgreSQL用户  private $passwd; // PostgreSQL密码  private $db; // Postgresql数据库  private $result; // 查询的结果  private $querycount; // 已执行的查询总数  /* 类构造函数,用来初始化$host、$user、$passwd和$db字段。 */  function __construct($host, $port ,$db, $user, $passwd) {  $this->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);	 }}  ?>  
Copy after login

你这个应该是页面编码的问题。中文可能乱码了。
mysql_query('set names utf8')

的确如lang11zi 所说,我把需要写入的字符串转化为 utf8就ok了。因为字符串是从 Excel读出来的,默认是GB2312。
谢谢以上各位的解答。散分。

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

Describe the SOLID principles and how they apply to PHP development. Describe the SOLID principles and how they apply to PHP development. Apr 03, 2025 am 12:04 AM

The application of SOLID principle in PHP development includes: 1. Single responsibility principle (SRP): Each class is responsible for only one function. 2. Open and close principle (OCP): Changes are achieved through extension rather than modification. 3. Lisch's Substitution Principle (LSP): Subclasses can replace base classes without affecting program accuracy. 4. Interface isolation principle (ISP): Use fine-grained interfaces to avoid dependencies and unused methods. 5. Dependency inversion principle (DIP): High and low-level modules rely on abstraction and are implemented through dependency injection.

How to automatically set permissions of unixsocket after system restart? How to automatically set permissions of unixsocket after system restart? Mar 31, 2025 pm 11:54 PM

How to automatically set the permissions of unixsocket after the system restarts. Every time the system restarts, we need to execute the following command to modify the permissions of unixsocket: sudo...

How to debug CLI mode in PHPStorm? How to debug CLI mode in PHPStorm? Apr 01, 2025 pm 02:57 PM

How to debug CLI mode in PHPStorm? When developing with PHPStorm, sometimes we need to debug PHP in command line interface (CLI) mode...

Explain the concept of late static binding in PHP. Explain the concept of late static binding in PHP. Mar 21, 2025 pm 01:33 PM

Article discusses late static binding (LSB) in PHP, introduced in PHP 5.3, allowing runtime resolution of static method calls for more flexible inheritance.Main issue: LSB vs. traditional polymorphism; LSB's practical applications and potential perfo

How to send a POST request containing JSON data using PHP's cURL library? How to send a POST request containing JSON data using PHP's cURL library? Apr 01, 2025 pm 03:12 PM

Sending JSON data using PHP's cURL library In PHP development, it is often necessary to interact with external APIs. One of the common ways is to use cURL library to send POST�...

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

See all articles