Я хочу прочитать мой текстовый файл построчно, а затем сохранить в базе данных postgresql. Но я получил эти ОШИБКИ.
"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 и несколько одинарных кавычек, и все будет хорошо:
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES ($parts[0], '$parts[1]', $parts[2], '$parts[3]', $parts[4]);
Заставляет задуматься, почему PHP не поднял это сам по себе …
Других решений пока нет …