2013-01-08 41 views
-1

我正在運行在我的PostgreSQL數據庫的查詢的PHP代碼:PostgreSQL不會在表中插入值?

$insert = pg_query($pg_conn, 
"INSERT INTO kullanicilar(id, u_name, u_firstname, u_lastname, register_date, gold, exp, play_times, level) 
VALUES($k_id, '$u_name', '$u_firstname', '$u_lastname', 'NOW()', 0, 0, 0, 1);" 
); 

if ($insert) { 
    echo 'Insert succeeded.'; 
} else { 
    echo 'An error occurs when inserting'; 
} 

我得到插入每次消息時發生錯誤。我的代碼有什麼問題?

CNC中(詳細信息)

我使用的Heroku Postgres的。我的變量的定義是這樣的;

$k_id = intval($basic['id']); //int 
$u_name = $basic['name']; //string 
$u_firstname = $basic['first_name']; //string 
$u_lastname = $basic['last_name']; //string 

這是我的Heroku日誌的一部分:

PHP Warning: pg_pconnect(): Unable to connect to Postg 
reSQL server: could not connect to server: Connection refused\n\tIs the server r 
unning on host "-----.amazonaws.com" and accepting\n\tTCP/ 
IP connections on port 5432? in /app/www/index.php on line 91, referer: http://a 
pps.facebook.com/---/ 

PHP Warning: pg_last_error() expects parameter 1 to be 
resource, boolean given in /app/www/index.php on line 119, referer: http://apps 
.facebook.com/---/ 

PHP Warning: pg_num_rows() expects parameter 1 to be r 
esource, null given in /app/www/index.php on line 106, referer: http://apps.face 
book.com/---/ 

PHP Warning: pg_query() expects parameter 1 to be reso 
urce, boolean given in /app/www/index.php on line 107, referer: http://apps.face 
book.com/---/ 

PHP Warning: pg_last_error(): No PostgreSQL link opene 
d yet in /app/www/index.php on line 111, referer: http://apps.facebook.com/---/ 

PHP Warning: pg_query() expects parameter 1 to be reso 
urce, boolean given in /app/www/index.php on line 98, referer: http://apps.faceb 
ook.com/---/ 
+0

使用pg_query_params()來避免SQL注入。 –

+1

我發現這個http://php.net/manual/en/function.pg-query-params.php,但我不知道我應該添加作爲第三個參數** params **。換句話說,我不知道'pg_query_params($ pg_conn,$ myquery,x)'中的** x **'。謝謝。 –

+0

***是什麼錯誤? –

回答

1

如果register_date應該是一個timestamp(帶有時區),它應該是now()(不含單引號,函數調用)而不是'now()'(帶單引號,字符串文字)。

Postgres發出更詳細的錯誤消息。檢查數據庫日誌。

pgAdmin只是一個GUI。如果它駐留在客戶端上,它可能根本無法訪問服務器上的日誌文件。如果它駐留在同一臺機器上,只需要進行適當的配置即可。

每半途中正常配置Postgres服務器寫入日誌文件。查看postgresql.conf at the settings described here以查找或配置位置。

+0

檢查http://us1.php.net/manual/en/function.pg-last-error.php –

+0

Erwin Brandstetter,仍然無法正常工作。我刪除了now()的引號,但同樣的錯誤代表。 –

+0

@MehmetEminAcar:沒有更多的信息,其餘的只是一個猜謎遊戲。按照Frank的鏈接或查看數據庫日誌以獲取更詳細的錯誤消息。 –