我需要用n个用户名和密码创建n个用户。
如果我提供输入5
,abc
。 5应使用abc1
,abc2
,abc3
,abc4
和abc5
等用户名和密码创建用户。
如何通过提供mysql插入查询在for循环中执行此操作?
以下是我的表格
create.php
Create User :
<br><br>
<form action="add_res.php" method="post">
Count : <input type = "text" name="count"><br>
Name : <input type = "text" name="val">
<input type = "submit">
</form>
和add_res.php
<?php
$count=$_POST['count'];
$val=$_POST['val'];
include ('config.php');
echo "<b>".$count." Users Created"."</b>"."<br>";
echo "<u>"."The Users' List is given below"."</u>";
for ($i=1; $i <=$count; $i++)
{
$select=mysql_query("insert into student (username, password) VALUES
('$con', '$con')");
}
?>
我不知道实现正确的for循环和正确的插入查询。我怎样才能实现它?
答案 0 :(得分:1)
使用for循环和以下格式的插入查询
<?php
$count=$_POST['count'];
$val=$_POST['val'];
include ('config.php');
echo "<b>".$count." Users Created"."</b>"."<br>";
echo "<u>"."The Users' List is given below"."</u>";
for ($i=1; $i <=$count; $i++)
{
echo "<br>";
echo $val.$i;
$con=$val.$i;
$select=mysql_query("insert into student (username, password) VALUES
('$con', '$con')");
}
?>
答案 1 :(得分:1)
此处的其他几个答案已经说明了如何正确设置要与MySQL查询一起发送的变量,但是每个变量以及原始代码都包含一个经典的SQL injection漏洞!特别是因为您直接从$_POST
获取输入,这将允许攻击者完全控制您的数据库 - 读取数据,重置密码,等等。
解决问题的一种方法是将输入转义为mysql_query
。解决原始问题和安全问题的版本可能如下所示:
<?php
include ('config.php');
$count = $_POST['count'];
$val = $_POST['val'];
echo "<b>".$count." Users Created</b><br>";
echo "<u>The Users' List is given below</u>";
echo "<ul>";
for ($i = 1; $i <= $count; $i++)
{
echo "<li>";
$name = $val . $i;
$name = mysql_real_escape_string($name);
mysql_query("insert into student (username, password) VALUES ('$name', '$name')");
}
echo "</ul>";
但是,这仍然使用mysql_query
,虽然mysql_real_escape_string
解决了上述安全问题,但它不是编写MySQL查询的首选方法。我相信PDO是现在推荐的方式。
答案 2 :(得分:0)
只需使用$ val变量创建一个变量,然后将$ i变量放在最后。然后插入。
for ($i=1; $i <=$count; $i++)
{
$con = $val.$i;
$select=mysql_query("insert into student (username, password) VALUES ('$con', '$con')");
}
答案 3 :(得分:0)
替换此而不是循环
for ($i=1; $i <=$count; $i++)
{
echo "<br>";
echo $val.$i;
$con=$val.$i;
$select=mysql_query("insert into student (username, password) VALUES ('".$con."', '".$con."')");
}