0

伙计们只是想知道是否有更好的编码风格来从 from 因为我认为我的编码太长并且吃很多行

<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());
        }

        }


}

我想知道是否有更简洁的技术来获取这些值,假设输入是动态的,这就是为什么我在名称和 ID 的末尾输入一个数组

4

3 回答 3

0

在循环中执行查询也不是一件好事,它会减慢您的执行速度。尝试这个:

    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());
        }

    }
于 2012-09-21T21:29:23.847 回答
0

你正在做的不是必需的,因为 php 为你不需要创建不同的 multipal 输入返回一个数组,$post 已经是数组并且 $post["name"] 也是数组

      $name = $_POST['name']; 

       foreach( $name as $key => $n ) { echo "The name is ".$n.".", thank you\n"; }

看到它已经是一个不需要循环并再次创建它的数组它已经存在

当你做 $name=$_post["name"]; $name 在你的情况下变成数组

就如此容易

$button = $_POST['submit_in']; $name= $_POST['name']; $grade = $_POST['grade']; $counter2 = 0;

如果(isset($按钮)){

for($v=0;$v<=$counter2-1;$v++){ $insert = "插入 stud_info(stud_name,stud_grade) VALUES('$name[$v]','$grade[$v] ')"; if(@!mysql_query($insert)){ die('错误插入'.mysql_error()); }

}

}

*注意 *我在移动浏览器上,所以代码没有经过测试,但它应该可以工作

于 2012-09-21T21:14:54.137 回答
0

我认为您还应该更多地担心代码中的安全性和 SQL 注入...

重温 PHP 代码(10 行)

$sql = "INSERT INTO stud_info(stud_name,stud_grade)  VALUES('%s','%s')" ;
if (isset($_POST['submit_in'])) {
    for($i = 0; $i < count($_POST['name']); $i++)
    {
        $name = mysql_real_escape_string($_POST['name'][$i]);
        $grade = mysql_real_escape_string($_POST['grade'][$i]);
        $insert = sprintf($sql, $name, $grade);
        mysql_query($insert) or die('error insert' . mysql_error());
    }
}
于 2012-09-21T21:26:20.760 回答