使用 php 将文本文件中的数据保存到 PostGreSQL 数据库

Saving data from textfile to PostGreSQL database using php

我想逐行读取我的文本文件,然后保存到 postgresql database.But 我遇到了这些错误。

"Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near "," LINE 2: VALUES (1113, , 21, , ); ^ in C:\xampp\htdocs\phpsave\index.php on line 28
ERROR: syntax error at or near "," LINE 2: VALUES (1113, , 21, , ); ^1114rejie23Dimakita300000 

Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near "," LINE 2: VALUES (1114, , 23, , ); ^ in C:\xampp\htdocs\phpsave\index.php on line 28
ERROR: syntax error at or near "," LINE 2: VALUES (1114, , 23, , ); ^1115James24Dimakita2300000

Warning: pg_query() [function.pg-query]: Query failed: ERROR: syntax error at or near "," LINE 2: VALUES (1115, , 24, , ); ^ in C:\xampp\htdocs\phpsave\index.php on line 28
ERROR: syntax error at or near "," LINE 2: VALUES (1115, , 24, , ); ^"

我的代码有什么问题?这是我的示例文本文件:

<?php
$host        = "host=localhost";
$port        = "port=5432";
$dbname      = "dbname=sample";
$credentials = "user=postgres password=12345";

$fh = fopen('C:/Users/DecryptDcode/Desktop/james.txt','r');

$db = pg_connect("$host $port $dbname $credentials");
 if(!$db){
  echo "Error : Unable to open database\n";
} else {
  echo "Opened database successfully\n";
}
 while (!feof($fh) ) {
    $line_of_text = fgets($fh);
    $parts = explode('|', $line_of_text);
    print $parts[0] . $parts[1]. $parts[2] . $parts[3].  $parts[4]. "<BR>";
    $sql =<<<EOF
     INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
     VALUES ($parts[0], $part[1], $parts[2], $part[3], $part[4]);
    EOF;
  $ret = pg_query($db, $sql);
   if(!$ret){
     echo pg_last_error($db);
  } else {
  echo "Records created successfully\n";
 }
}
pg_close($db);
fclose($fh);
?>

很明显,您的代码没有在位置 1、3 和 4 中插入任何数据。错误消息只显示逗号,中间没有任何内容。您的代码中有问题的语句是这样的:

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
  VALUES ($parts[0], $part[1], $parts[2], $part[3], $part[4]);

在第 1、3 和 4 部分添加几个 s 和一些单引号就可以了:

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
  VALUES ($parts[0], '$parts[1]', $parts[2], '$parts[3]', $parts[4]);

让您想知道为什么 PHP 不会自己提出这个问题...