带有列数组的MySQL INSERT的语法

时间:2012-07-09 21:13:07

标签: php mysql

我是PHP和MySQL查询构建的新手。我有一个大型的处理器。需要一些字段,大多数字段是用户可选的。在我的例子中,HTML ID和MySQL列名称是相同的。我找到了关于使用数组将$ _POST转换为INSERT INTO的字段和值的教程,但是我不能让它们工作 - 几个小时之后。我已经退回到使用数组和变量进行非常简单的INSERT,但我仍然难过。以下行工作并将5个项目插入到包含100多列的数据库中。前4项是字符串,第5项,monthlyRental是整数。

$query = "INSERT INTO `$table` (country, stateProvince, city3, city3Geocode, monthlyRental) VALUES ( '$country', '$stateProvince', '$city3', '$city3Geocode', '$monthlyRental')";

当我为字段创建数组并使用它时,如下所示:

$colsx = array('country,', 'stateProvince,', 'city3,', 'city3Geocode,', 'monthlyRental');
$query = "INSERT INTO `$table` ('$colsx') VALUES ( '$country', '$stateProvince', '$city3', '$city3Geocode', '$monthlyRental')";

我收到MySQL错误 - 请检查与MySQL服务器版本对应的手册,以便在''Array'附近使用正确的语法。)VALUES('US','New York','Fairport,Monroe County,New York ','(43.09)'在第1行。我得到这个错误,数组项是否在单引号内有逗号。我已经做了很多阅读并尝试了很多组合,我无法得到它。我想要在我回到foreach表达式处理$ _POST并且字段和值都是数组之前,要在小规模上看到正确的语法。是的,我知道我应该使用mysql_real_escape_string,但这是foreach中的一个简单的后续步骤。最后,关于值数组的语法的一些线索会有所帮助,特别是如果它与fields数组不同。我知道我需要添加一个null作为第一个数组项来触发MySQL自动增量id。还有什么?< / p>

我很新,所以请具体说明。

1 个答案:

答案 0 :(得分:4)

$query = "INSERT INTO `$table` ('$colsx') etc...

无法运作。 $ colsx是一个数组,所以你最终会产生的是字面意思

$query = "INSERT INTO `sometable` ('Array')
                                    ^^^^^---yes, it'll literally say "Array"

在执行此操作之前,您必须将数组预处理为字符串,例如

$colsx = array(...);
$col_string = implode(',', $colsx);
$query = "INSERT INTO `$table` ($col_string) etc...";