我想在一个表中插入多个字段时遇到问题。
这是我的表格:
<h1>Add user</h1> <form method="post" action="index.php"> <table> <thead> <th>Name</th> <th>Age</th> </thead> <tr> <td><input name="name[]" type="text" /></td> <td><input name="age[]" type="text" /></td> </tr> <tr> <td><input name="name[]" type="text" /></td> <td><input name="age[]" type="text" /></td> </tr> <tr> <td><input name="name[]" type="text" /></td> <td><input name="age[]" type="text" /></td> </tr> </table> <input type="submit" name="submit" value="Submit" /> </form>
这是提交代码:
if (isset($_POST['submit'])) { foreach ($_POST as $val) { $name = $val['name']; $age = $val['age']; mysql_query("INSERT INTO users (name, age) VALUES ('$name', '$age')"); } }
该查询将插入数据库,但不会插入我输入的值。
有人可以帮帮我吗?
您正在对$_POST而不是在名称/年龄数组上进行foreach 。您应该像这样对名称或年龄数组进行foreach:
$_POST
if ( !empty($_POST['name']) && !empty($_POST['age']) && is_array($_POST['name']) && is_array($_POST['age']) && count($_POST['name']) === count($_POST['age']) ) { $name_array = $_POST['name']; $age_array = $_POST['age']; for ($i = 0; $i < count($name_array); $i++) { $name = mysql_real_escape_string($name_array[$i]); $age = mysql_real_escape_string($age_array[$i]); mysql_query("INSERT INTO users (name, age) VALUES ('$name', '$age')"); } }
我还要指出,您当前容易受到SQL注入的影响,因此我添加了转义字符串以获取名称/年龄的步骤。
我也强烈建议您仅在数据库中进行一次批量插入,而不要分别插入每个记录(我将由您自己实现)。从性能的角度来看,这种方法几乎总是可取的。
最后,您不应该使用mysql_*不推荐使用的函数。考虑更改为mysqli或PDO。
mysql_*