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数据库相同的确切线。这里可能是什么问题?
有几件事情错在这里:
你的代码可能易受SQL injection。请参阅PHP manual on SQL injection和本网站。请使用参数化查询(“准备语句”)。
您没有得到完整的错误,因此您将很难诊断故障。根据the manual for
pg_query
,您可以使用pg_last_error
获取错误详细信息。
我怀疑眼前的问题可能是区分大小写;您可能已将您的表创建为"POP_HOUSING_ESTIMATE_STATE"
,但您将其查询为POP_HOUSING_ESTIMATE_STATE
。请注意不同的引用。请参阅PostgreSQL手册中的Identifiers and keywords以了解PostgreSQL的案例折叠行为的说明。 ANSI SQL需要这种大小写折叠,但PostgreSQL会折叠为小写,而不是标准大写的大写。
除了Craig的笔记,我还要补充说,因为你没有指定列,所以你可能没有插入数据到列你认为你是......通常有一个良好的做法,有列的列表.... – 2013-04-29 07:00:55
如果你能够将你的SQL字符串直接粘贴到postgresql中,那么你可以排除你的SQL语法。这留下了你的连接。有几件事可能会出错...没有网络路径,密码错误,服务器名称中的错字,忽略运行pg_connect()等。
echo pg_last_error($dbconn)
运行后立即$dbconn=pg_connect($conn)
(但您已将其命名为你的代码)。
将[此](http://php.net/manual/en/function.mysql-error.php)添加到您的代码中,并查看您实际获得的错误。这会给你一个想法。 – Butters 2013-04-29 00:07:51
您可以添加pg_last_error()来查看发生了什么错误 – Pol0nium 2013-04-29 00:26:23
验证您的$ dbconn已正确初始化。 – phatfingers 2013-04-29 00:27:07