PHP新手,我的SQL查询出了什么问题?

问题描述:

我想通过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

有几件事情错在这里:

我怀疑眼前的问题可能是区分大小写;您可能已将您的表创建为"POP_HOUSING_ESTIMATE_STATE",但您将其查询为POP_HOUSING_ESTIMATE_STATE。请注意不同的引用。请参阅PostgreSQL手册中的Identifiers and keywords以了解PostgreSQL的案例折叠行为的说明。 ANSI SQL需要这种大小写折叠,但PostgreSQL会折叠为小写,而不是标准大写的大写。

+1

除了Craig的笔记,我还要补充说,因为你没有指定列,所以你可能没有插入数据到列你认为你是......通常有一个良好的做法,有列的列表.... – 2013-04-29 07:00:55

如果你能够将你的SQL字符串直接粘贴到postgresql中,那么你可以排除你的SQL语法。这留下了你的连接。有几件事可能会出错...没有网络路径,密码错误,服务器名称中的错字,忽略运行pg_connect()等。

echo pg_last_error($dbconn)运行后立即$dbconn=pg_connect($conn)(但您已将其命名为你的代码)。