将表单中的数据插入数据库表(PDO)

时间:2014-07-23 09:31:39

标签: php forms pdo

我在这里有以下代码。它旨在建立一个数据库,连接到它,提供一个包含三个字段的用户表单(' name1',' name2',' digits'),并包括表单的两个选项:如果提交中三个文本框字段之一(' name1',' name2',' digits')为空,那么应该是告诉用户哪些输入丢失的消息。如果存在所有三个输入,则输入数据应该进入表格“mytable”'在数据库中并将用户引导到另一个页面。

截至目前,数据未插入到表格中,即使在刷新页面时也未按下提交按钮,基于之前的条目,也会显示丢失的文本框消息。谢谢你的帮助!

<?php
try{
$conn = new PDO ('mysql:host=localhost;dbname=myuser','mydb','password');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'ERROR: ' $e->getMessage ();
ini_set('display_errors', 1);
error_reporting(E_ALL);

}
?>  
</br>
<form action = "form" method="post">
</br>


Field1:<input type="text" id="name1" name="name1"><br/>
Field2:<input type="text" id="name2" name="name2"><br/>
Digits:<input type="text" id="digits" name="digits"><br/>
<input type="reset" name="reset">
<input type="submit" name="submit"></br>
</form>

<?php

$required = array(
'name1',
'name2',
'digits',
);
if(isset($_POST ['submit'])){
$i = 0;
foreach($required as $field)
if(empty($_POST ['$field'])){
echo "{$field} is required";}
echo "<br/>";
if($i==0) {
$q = "INSERT INTO mytable (name1, name2, digits) VALUES (:name1, :name2, :digits);";
$query = $conn->prepare($q);
$results = $query->execute(array(
":name1" => $name1,
":name2" => $name2,
":digits" => $digits
));
header ("Location: Secondpage.php");}}
?>          

2 个答案:

答案 0 :(得分:0)

您永远不会为$name1$name2$digits分配值。

大概你的意思是$_POST['name1']等。

答案 1 :(得分:0)

将else条件添加到foreach循环中的if子句。将POST的值分配给变量$ name1,$ name2和$ digits

在其他部分添加以下行:

$$ field = $ _POST [$ field];