Postgres DB에 행을 삽입하는 PHP 스크립트가 있습니다. 내 테스트 서버 (Postgres 9.1)에서는 제대로 작동하지만 새로운 공유 호스트에서는 실패합니다 (Postgres 8.4).pg_send_query_params는 TRUE를 반환하지만 실패 함
$query = "INSERT INTO " . $table . " VALUES (DEFAULT, $1, $2, CURRENT_TIMESTAMP::TIMESTAMP(0), $3, $4, ST_Point($4, $3))";
$result = pg_send_query_params($dbconn, $query, array($is_happy, $rate, $lat, $lon));
$result
은 항상 TRUE이지만 행은 삽입되지 않습니다.
나는 또한 시도 :
$result = pg_get_result($dbconn);
그러나 동일한 동작을 경험했다. 나는 또한 모두 시도 아래 CraigRinger의 거래 제안 @ 다음
: 여전히
$query = "BEGIN;INSERT INTO " . $table . " VALUES (DEFAULT, $1, $2, CURRENT_TIMESTAMP::TIMESTAMP(0), $3, $4, ST_Point($4, $3));COMMIT;";
$result = pg_send_query_params($dbconn, $query, array($is_happy, $rate, $lat, $lon));
및
pg_send_query($dbconn, "BEGIN;");
$query = "INSERT INTO " . $table . " VALUES (DEFAULT, $1, $2, CURRENT_TIMESTAMP::TIMESTAMP(0), $3, $4, ST_Point($4, $3));";
$result = pg_send_query_params($dbconn, $query, array($is_happy, $rate, $lat, $lon));
pg_send_query($dbconn, "COMMIT;");
와 같은 동작을 얻었다.
phpPgAdmin에서 INSERT 쿼리를 실행하면 행이 삽입됩니다. 나는 또한 PHP 스크립트에서이 쿼리의 결과를 얻을 수 있어요 : 삽입 쿼리 결과가 참 있지만 행이 삽입되지 않은 경우
"SELECT relid FROM pg_stat_user_tables"
이 무엇을 의미합니까? 무엇이 문제가 될 수 있으며 어떻게 해결할 수 있습니까?
편집
내가 할 수 phpPgAdmin를 사용 INSERT
행과 PHP 스크립트에서 다음 SELECT
이러한 행.
다음은 실패한 전체 PHP 스크립트입니다 (완전한 전체 스크립트에있는 POST 수집 및 유효성 검사가 제거되었습니다). rest.php
스크립트는 연결 vars와 응답 기능 만 보유합니다. 이 rest.php
스크립트는 내 SELECT
스크립트로 작동합니다
<?php
require "KLogger.php";
require "rest.php";
ini_set("error_reporting", E_ALL^E_NOTICE);
ini_set("display_errors", 0);
ini_set("log_errors", 1);
$log = KLogger::instance(dirname(__FILE__), KLogger::DEBUG);
$log_id = "AM".time();
$log->logInfo($log_id . " *** " . $_SERVER['REMOTE_ADDR']);
$lat = '51.510199';
$lon = '-0.129654';
$rate = '10';
$is_happy = 't';
$dbconn = pg_connect("host=" . $host . " dbname=" . $db . " user=" . $user . " password=" . $pw);
if(!$dbconn)
{
$log->logInfo($log_id . " No connection: " . pg_last_error());
sendResponse(500, "Internal Server Error");
}
else
{
$query = "INSERT INTO " . $table . " VALUES (DEFAULT, $1, $2, CURRENT_TIMESTAMP::TIMESTAMP(0), $3, $4, ST_Point($4, $3));";
$result = pg_send_query_params($dbconn, $query, array($is_happy, $rate, $lat, $lon));
if(!$result)
{
$log->logInfo($log_id . " No Result: " . pg_last_error());
sendResponse(500, "Internal Server Error");
}
else
{
$log->logInfo($log_id . " sendResponse(200)");
sendResponse(200, "OK");
}
}
pg_close($dbconn);
?>
"행이 삽입되지 않았습니다." –
@CraigRinger : phpPgAdmin으로 테이블을 탐색 중입니다. – Polly
그래서 phpPgAdmin에 문제가없는 것은 무엇입니까? 'psql'에서'SELECT'을 시도 했습니까? 동일한 데이터베이스에 연결한다는 것이 확실합니까? –