我正在学习如何使用PDO,到目前为止它一直很好。 我无法解决一个小问题。
我有一个包含2个字段的html表单,但点击+
会添加另外2个字段。
Array ( [domainname] => Array ( [0] => google [1] => facebook [2] => stackoverflow ) [domainextension] => Array ( [0] => nl [1] => eu [2] => com ) )
我需要将其插入到我的数据库中。显然" google"属于" nl"等等。
$post = $_POST;
try {
// Create a new PDO object (start database connection)
$dbh = new PDO('mysql:host=localhost;dbname=domains', $user, $pass);
// Build the query
$sql = "INSERT INTO domain_list (name, ext, status)
VALUES (:name,:ext,:status)";
// Prepare the query
$q = $dbh->prepare($sql);
// Execute the query
$q->execute(array(':name' => $name,
':ext' => $ext,
':status' => $status));
// End the database connection connection
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
状态:这就是&#34;活跃&#34;,所以我可以用它来选择。
我知道我只需要创建一个foreach,以便所有行都更新到数据库,但我不知道最好的方法。
提前致谢。
答案 0 :(得分:5)
你应该尝试类似的东西:
for ($i=0;$i<count($_POST['domainname']);$i++) {
$name = $_POST['domainname'][$i];
$ext = $_POST['domainextension'][$i];
$status = $_POST['status'][$i]; //Since you have not provided what $status is, this is my guess
$q->execute(array(':name' => $name,
':ext' => $ext,
':status' => $status));
}
答案 1 :(得分:0)
不是在PHP上重构数组,而是只更新输入的创建方式,以便将名称和扩展名保存在一起:
<input name="domain[0][name]">
<input name="domaon[0][ext]">
<input name="domain[1][name]">
<input name="domaon[1][ext]">
然后,您可以循环遍历$_POST["domain"]
数组并自行使用name
/ ext
属性。
您还可以使用PHP内置的构造进行多个数组迭代:
$mit = new MultipleIterator;
$mit->attachIterator (new ArrayIterator ($_POST["domainname"]), "name");
$mit->attachIterator (new ArrayIterator ($_POST["domainext"]), "ext");
foreach ($mit as $domain) {
// $domain["name"] / $domain["ext"]
}