下午好,
我将首先从我想要达到的目标开始,然后给出一个我需要做的非常基本的例子。
目标
我决定放弃收集多个变量并用键分别命名它们,而是使用数组结构来处理相同类型和规则的所有输入。一旦我有了这些变量,我将对它们进行验证,如果“确定”,则将它们存储在MySQL表中。该表将保存使用者信息,并需要存储同一类型信息的多行。
第一关
我将省略这个问题的验证部分,因为我觉得我需要先了解基本知识。
<form action="?" method="POST" name="Form">
Member 1 First Name:<input type="text" name="MemberFirstName[]" /><br />
Member 1 Last Name: <input type="text" name="MemberLastName[]" /><br />
Member 1 Email: <input type="text" name="MemberEmail[]" /><br />
Member 2 First Name:<input type="text" name="MemberFirstName[]" /><br />
Member 2 Last Name: <input type="text" name="MemberLastName[]" /><br />
Member 2 Email: <input type="text" name="MemberEmail[]" /><br />
Member 3 First Name:<input type="text" name="MemberFirstName[]" /><br />
Member 3 Last Name: <input type="text" name="MemberLastName[]" /><br />
Member 3 Email: <input type="text" name="MemberEmail[]" /><br />
<input type="submit" name="submit" value="Continue" />
</form>
我希望为名字(一个必需的字段)提供的每个输入都将为该特定条目生成一个唯一的密钥,而不会覆盖任何输入的数据。因为我把信息从一个页面传递到另一个页面(签出表单),所以我将POST变量转换为会话变量,然后最终存储在mysql数据库中。我的希望是:
<?php
$conn = mysql_connect("localhost", "username", "password");
mysql_select_db("DBname",$conn);
$sql = "INSERT INTO tablename VALUES ('$_SESSION[Member1FirstName]', '$_SESSION[Member1LastName]', '$_SESSION[Member1Email]', '$_SESSION[Member2FirstName]', '$_SESSION[Member2LastName]', '$_SESSION[Member2Email]', '$_SESSION[Member1FirstName]', '$_SESSION[Member3LastName]', '$_SESSION[Member3Email]')";
$result = mysql_query($sql, $conn) or die(mysql_error());
Header ("Location: completed.php");
?>
其中Member1、Member2和Member3值将出现在表中它们自己的行上我知道我的代码是错误的,但我是第一次尝试我试图实现的总体业务目标,并试图学习如何以正确的方式编码。
我对编程非常,非常陌生,所以任何“婴儿建议”都非常感谢。
最佳答案
根据您的列名,下面是
INSERT INTO tablename
VALUES ('$_SESSION[Member1FirstName]', '$_SESSION[Member1LastName]', '$_SESSION[Member1Email]'),
('$_SESSION[Member2FirstName]', '$_SESSION[Member2LastName]', '$_SESSION[Member2Email]'),
('$_SESSION[Member1FirstName]', '$_SESSION[Member3LastName]', '$_SESSION[Member3Email]')"
可以在mysql上工作,请参见INSERT。
但是,如果不清理输入,这将导致很多麻烦。
编辑:
清理是指sql injection攻击,直接传递到数据库的字符串可能包含允许攻击者更改数据库密码或更新或销毁数据的结构。
编辑2:
至于php语法,我认为this question有合理的答案,您可以从中学习。
关于php - 表单中的数组可能收集多个具有相同名称的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2853575/