Php 获取多输入值的简短技术
伙计们只是想知道是否有一种更好的编码方式来获得来自的多重输入,因为我觉得我的编码太长了,而且占用了很多行Php 获取多输入值的简短技术,php,Php,伙计们只是想知道是否有一种更好的编码方式来获得来自的多重输入,因为我觉得我的编码太长了,而且占用了很多行 <body> <form action="index.php" method="post"> <input type="hidden" name="number_students" value="4"> <table> <tr> &
<body>
<form action="index.php" method="post">
<input type="hidden" name="number_students" value="4">
<table>
<tr>
<td><input type="text" name="name[0]"></td>
<td><input type="text" name="grade[0]"></td>
</tr>
<tr>
<td><input type="text" name="name[1]"></td>
<td><input type="text" name="grade[1]"></td>
</tr>
<tr>
<td><input type="text" name="name[2]"></td>
<td><input type="text" name="grade[2]"></td>
</tr>
<tr>
<td><input type="text" name="name[3]"></td>
<td><input type="text" name="grade[3]"></td>
</tr>
</table>
<input type="submit" name="submit_in" value="submit">
</form>
</body>
php
$button = $_POST['submit_in'];
$arrayname = array();
$arraygrade = array();
$name= $_POST['name'];
$grade = $_POST['grade'];
$counter2 = 0;
if(isset($button)){
foreach($name as $a => $x){
$arrayname[] ="".$x;
}
foreach($grade as $b => $y){
$arraygrade[] ="".$y;
$counter2+=1;
}
for($v=0;$v<=$counter2-1;$v++){
$insert = "INSERT INTO stud_info(stud_name,stud_grade)
VALUES('$arrayname[$v]','$arraygrade[$v]')";
if(@!mysql_query($insert)){
die('error insert'.mysql_error());
}
}
}
$button=$\u POST['submit\u in'];
$arrayname=array();
$arraygrade=array();
$name=$_POST['name'];
$grade=$_POST['grade'];
$2=0;
如果(设置($按钮)){
foreach($a=>$x的名称){
$arrayname[]=.$x;
}
foreach($b=>y){
$arraygrade[]=“”.$y;
$2+=1;
}
对于($v=0;$v您所做的不是必需的,因为php为多路径输入返回一个数组,您不需要创建不同的,$post已经是数组,$post[“name”]也是数组
$name = $_POST['name'];
foreach( $name as $key => $n ) { echo "The name is ".$n.".", thank you\n"; }
看到它已经是一个数组了,你不需要循环并再次创建它
它已经在那里了
当您执行$name=$\u post[“name”];
$name在您的情况下成为数组
就这么简单
$button=$_POST['submit_in'];
$name=$_POST['name'];
$grade=$_POST['grade'];
$2=0
如果(设置($按钮)){
对于($v=0;$v我认为您还应该更加担心代码的安全性和SQL注入
重温PHP代码(10行)
$sql=“插入螺柱信息(螺柱名称、螺柱等级)值('%s','%s')”;
如果(isset($\u POST['submit\u in'])){
对于($i=0;$i
在循环中执行查询也不是一件好事,它会降低执行速度。
试试这个:
if(!empty($_POST)) {
//check if post variables are set and they are not empty
//check that sizeof($_POST['name']) == $_POST['grade']
//connect to db
$name = $grade = array();
for($i=0; $i < sizeof($_POST['name']); ++$i) {
$name[$i] = mysql_real_eascape_string(trim($_POST['name'][$i]));
$grade[$i] = mysql_real_eascape_string(trim($_POST['grade'][$i]));
}
$values = array();
$insert = 'INSERT INTO stud_info(`stud_name`, `stud_grade`) VALUES';
for($i=0; $i < sizeof($name); ++$i) {
$values[$i] = '(\''.$name[$i].'\', \''.$grade[$i].'\')';
}
$values = implode(', ', $values);
$insert .= $values;
if(@!mysql_query($insert)){
die('error insert'.mysql_error());
}
}
if(!empty($\u POST)){
//检查post变量是否已设置且不为空
//检查sizeof($\u POST['name'])=$\u POST['grade']
//连接到数据库
$name=$grade=array();
对于($i=0;$i
是的,它可以工作。但是有更好的方法吗?。我发现使用起来很麻烦,而且占用了很多行。您想为您编写一些代码,还是有具体问题?我想编写一些代码。我想命名为[0]里面的索引会增加,所以没有必要把它放到数组中,但是我的技能不够。哈哈哈..我刚刚开始创建它,当我完成时我会这样做。但是谢谢你提醒我。嗯,你能解释一下代码吗。这对我来说太先进了,所以我的大脑很难消化。哈哈,好吧,好吧其主要思想是只进行一次查询来更新数据库。为此,您的查询必须如下所示:在stud_info(stud_name
,stud_grade
)值('name1','5'),('name2','8'),('name6','7')中插入名为$VALUES的数组,其中包含类似('name1','5')或('name2','8')的元素内爆函数创建一个字符串,数组中的所有元素相加,同时在所有元素之间添加一个字符串,这样你就有了一个类似('name1','5'),('name2','8'),('name6','7')的字符串,然后你只需将它与'INSERT INTO stud_info(stud_name
,stud grade
)“价值观”。
if(!empty($_POST)) {
//check if post variables are set and they are not empty
//check that sizeof($_POST['name']) == $_POST['grade']
//connect to db
$name = $grade = array();
for($i=0; $i < sizeof($_POST['name']); ++$i) {
$name[$i] = mysql_real_eascape_string(trim($_POST['name'][$i]));
$grade[$i] = mysql_real_eascape_string(trim($_POST['grade'][$i]));
}
$values = array();
$insert = 'INSERT INTO stud_info(`stud_name`, `stud_grade`) VALUES';
for($i=0; $i < sizeof($name); ++$i) {
$values[$i] = '(\''.$name[$i].'\', \''.$grade[$i].'\')';
}
$values = implode(', ', $values);
$insert .= $values;
if(@!mysql_query($insert)){
die('error insert'.mysql_error());
}
}