Спасибо за чтение этого. Не могли бы вы дать несколько советов о том, как понять и решить два вопроса ниже? Я новичок в PHP и PostgreSQL. ОС: OSX 10.9.5, PHP: 5.6.4, PostgreSQL: 9.4.0
Вот фрагмент:
$params = array(strval($_POST['que_str2']));
$myresult = pg_query_params($connection, 'copy $1 from stdin', $params);
echo "<br />\n$params[0] <br />\n";
Warning: pg_query_params(): Query failed: ERROR: syntax error at or near "$1" LINE 1: copy $1 from stdin ^ in /Library/WebServer/Documents/test.php
my_table
Вот фрагмент:
$params = array(strval($_POST['que_str2']), strval($_POST['que_str1']));
$myresult = pg_query_params($connection, 'copy $1 from $2 DELIMITERS \',\' CSV', $params);
echo "<br />\n$params[0] $params[1]<br />\n";
Warning: pg_query_params(): Query failed: ERROR: syntax error at or near "$1" LINE 1: copy $1 from $2 DELIMITERS ',' CSV ^ in /Library/WebServer/Documents/test.php on line 20
my_table /Library/WebServer/Documents/data2.csv
==
Насколько я знаю, PostgreSQL не поддерживает параметризованный COPY
заявления. В соответствии с документами PG 9.4 о подготовленных заявлениях (http://www.postgresql.org/docs/9.4/static/sql-prepare.html), только SELECT
, INSERT
, UPDATE
, DELETE
, или же VALUES
заявления могут быть параметризованы.
Что вам, возможно, придется сделать, это построить COPY
сформулируйте и интерполируйте параметры самостоятельно (с соответствующей очисткой и экранированием, чтобы смягчить инъекцию и т. д.), а затем отправьте его с pg_query
вместо.
Других решений пока нет …