使用PHP将数据插入MySQL数据库
我正在向查询传递一个数组。然而,我似乎无法添加每个值 所传递的数组为:使用PHP将数据插入MySQL数据库,php,mysql,sql,Php,Mysql,Sql,我正在向查询传递一个数组。然而,我似乎无法添加每个值 所传递的数组为: Array ( [name] => Name [address_1] => Address 1 [address_2] => Address 2 [address_3] => Address 3 [address_4] => Address 4 [post_code] => Post
Array (
[name] => Name
[address_1] => Address 1
[address_2] => Address 2
[address_3] => Address 3
[address_4] => Address 4
[post_code] => Post COde
[proptype] => rent
[style] => house
[beds] => 1
[bathrooms] => 1
[garden] => 1
[furnished] => yes
[deposit] => Deposit
[available] => 10/18/2013
[description] => Description
)
下面是我的代码:
foreach ($data as $column => $value) {
$columns .= ($columns == "") ? "" : ", ";
$columns .= $column;
$values .= ($values == "") ? "" : ", ";
$values .= $value;
}
$sql = "INSERT INTO $table ($columns) VALUES ($values)";
echo "--->" . $sql;
exit;
我知道我需要把每个值都括起来,但我看不出在哪里需要这样做
谢谢你抽出时间 试试看:
foreach ($data as $column => $value) {
$columns .= ($columns == "") ? "" : ", ";
$columns .= $column;
$values .= ($values == "") ? "" : ", ";
$values .= "'" . $value . "'";
}
您还可以使用一些内置php函数:
// join column names with a comma
$columns = join(array_keys($data),',');
// pass every value through mysql-escape and join the values with quotes and commas
$values = join(array_map("mysql_real_escape_string",array_values($data)),'","');
// use the produced strings; make sure you wrap the values string with double quotes
$sql = "INSERT INTO $table ($columns) VALUES (\"$values\")";
供参考:
,
,
,
出于安全原因,我使用mysql\u real\u escape\u字符串。t-coder感谢您的快速回复。在你的帮助下,我设法使它工作起来了。我添加了:foreach($column=>$value){$columns.=($columns==“”)?“”:“;$columns.=$column;$values.=($values==“”)?“”:“;$values.=””;}$sql=“插入$table($columns)values($values)”;除非您的值都是数字,否则必须将它们括在单引号中,“这对数字值也是安全的。”插入数字字段时,1'将转换为1!请使用!PDO!别问为什么,就去做吧。您可以稍后阅读。同意@nietonfir:-)我认为使用此查询也不会添加数据。。。看看我的答案。。。可能是我指定的原因是发生了什么…@FahimParkar我很确定如果值与列类型匹配,查询将工作。关于你的答案,我不完全明白,但无论如何,你使用“INSERT INTO tableName VALUES$value;”的建议只有在数组包含所有列时才有效。为什么要插入?for循环将转到insert name。。正确的?现在,当循环尝试插入名称时,此时rest字段为空。。。若OP将所有字段设置为非空,那个么mysql将抛出异常。。。这只是我的想法。你怎么想?@FahimParkar循环是用来构造查询的,而不是在每次迭代中运行它。该查询应该在构造完成后的最后运行一次。希望这有意义。哎呀,我完全错过了…:D:P.我会先删除我的答案,然后再获得否决票