2013-04-29 64 views
1

我想通過PostgreSQL特定的內置函數使用PHP執行查詢,但是我無法弄清楚爲什麼我的查詢沒有運行。可能有人請點我在正確的方向就可能是錯誤與下面的代碼:PHP新手,我的SQL查詢出了什麼問題?

//create our final insert statement as a string 
$final_insert_query = $beginningOfInsertStmt . $oneRowFormatted . ");"; 
    echo $final_insert_query; // the output of this is listed below 
    // run the query and store result in $result   
    $result = pg_query($dbconn, $final_insert_query); 
    if (!$result) { 
     echo "An error occurred!!!!."; 
     exit; 
    } 
    else{ 
    echo $result . " was SUCCESSFUL!"; 
    } 

這個腳本的輸出是目前:

INSERT INTO POP_HOUSING_ESTIMATE_STATE VALUES(1, 'South', 'East South Central', 
'Alabama', 4784762, 4803689, 2173898, 2182088); 

An error occurred!!!!. 

因此,$final_insert_query變量應包含以下字符串(這似乎是一個有效的SQL INSERT語句通過所有手段):

INSERT INTO POP_HOUSING_ESTIMATE_STATE VALUES(1, 'South', 'East South Central', 
'Alabama', 4784762, 4803689, 2173898, 2182088); 

我還應該提及,我已成功插入通過終端直接進入我的PosgreSQL數據庫相同的確切線。這裏可能是什麼問題?

+0

將[此](http://php.net/manual/en/function.mysql-error.php)添加到您的代碼中,並查看您實際獲得的錯誤。這會給你一個想法。 – Butters 2013-04-29 00:07:51

+0

您可以添加pg_last_error()來查看發生了什麼錯誤 – Pol0nium 2013-04-29 00:26:23

+0

驗證您的$ dbconn已正確初始化。 – phatfingers 2013-04-29 00:27:07

回答

2

有幾件事情錯在這裏:

我懷疑眼前的問題可能是區分大小寫;您可能已將您的表創建爲"POP_HOUSING_ESTIMATE_STATE",但您將其查詢爲POP_HOUSING_ESTIMATE_STATE。請注意不同的引用。請參閱PostgreSQL手冊中的Identifiers and keywords以瞭解PostgreSQL的案例摺疊行爲的說明。 ANSI SQL需要這種大小寫摺疊,但PostgreSQL會摺疊爲小寫,而不是標準大寫的大寫。

+1

除了Craig的筆記,我還要補充說,因爲你沒有指定列,所以你可能沒有插入數據到列你認爲你是......通常有一個良好的做法,有列的列表.... – 2013-04-29 07:00:55

0

如果你能夠將你的SQL字符串直接粘貼到postgresql中,那麼你可以排除你的SQL語法。這留下了你的連接。有幾件事可能會出錯...沒有網絡路徑,密碼錯誤,服務器名稱中的錯字,忽略運行pg_connect()等。

echo pg_last_error($dbconn)運行後立即$dbconn=pg_connect($conn)(但您已將其命名爲你的代碼)。