我正在尝试将$ _POST数组插入到mysql数据库中。 foreach可以工作,但并非所有值都插入到同一行中,如下图所示。
这是我用来将数组插入数据库的foreach:
if($_POST)
{
// con->insert is my mysql function to insert the values
foreach ($_POST as $key => $value) {
if($con->insert('test',$key, $value)==true)
{
echo 'Het werkt!!!';
}
}
}
修改 这是con函数
public function insert($table,$row,$value) {
$query = mysqli_query($this->connect, "INSERT INTO `$table` (`$row`) VALUES ('$value')");
if ($query == true)
{
return true;
}
else{
return false;
}
}
我想从帖子中收集变量,然后我想将它们放在表格的同一行的数据库中。
如何获取同一行的值? 提前谢谢
答案 0 :(得分:4)
值会进入不同的行,因为每个变量都会进行一次插入。
您可能希望从$ _POST中收集所有变量,并将它们添加到单个插入的数据库中。
首先,像这样更改插入子句:
public function insert_multi($table, $items) {
$query = mysqli_query($this->connect,
"INSERT INTO `$table` (`firstKeyName`, `secondKeyName`) ".
"VALUES ('".$items['firstKeyName']."', '".$items['secondKeyName']."')");
if ($query == true)
{
return true;
}
else{
return false;
}
}
然后用所有参数调用一次:
$con->insert_multi('test', $_POST);
答案 1 :(得分:0)
最终,当你为每个键和值对做一个时,你正在为每个值做一个插入命令。
您可以尝试的一个选项是将$ _POST数组作为JSON数据插入。
<?php
$db = mysqli_connect(...);
foreach($_POST as $key => $value) {
mysqli_query($db, "INSERT into `table` VALUES ($key, $value)");
}
答案 2 :(得分:0)
INSERT INTO
$table
($row
)VALUES('$ value')
通常(如果这不是您正在编写的phpMySqlAdmin),您的应用程序知道哪些列可用于给定的表,并且您完全需要验证$ row的值,否则它是SQL注入的可怕潜力。
如果您有列名列表,则可以
INSERT INTO test (Col1, Col2, Col3) VALUES (?, ?, ?)
你可以给它数组
$_POST["COL1"], $_POST["COL2"], $_POST["COL3"]