这是我第一次编程,我需要一些帮助。我有一个代码,我从表格中获得$year,我想将其递增到年底,并将结果插入数据库:
include 'conect.php';
$user= $_POST['user'];
$school= $_POST['school'];
$year= $_POST['year'];
$endyear= $_POST['endyear'];
插入数据库应该重复这些变量,直到$endyear,类似于以下内容:
第1行:用户:John学校:UFPS年份:2010第2行:用户:John学校:UFPS年份:2011第3行:用户:John学校:UFPS年份:2012
如果我必须增加一个以上的变量怎么办?例如:
$user= $_POST['user'];
$school= $_POST['school'];
$year= $_POST['year'];
$endyear= $_POST['endyear'];
$day= $_POST['startday'];
$endday = $_POST['endday'];
并且递增到$endyear和endday?
结果:第1行:用户:约翰学校:UFPS年份:2010天:1第2行:用户:约翰学校:UFPS年份:2011年第2天第3行:用户:约翰学校:UFPS年份:2012天:3
假设您已经对POST数据进行了针对SQL注入攻击的净化,那么您可以使用一个循环:
for( $y = $year; $y <= $endyear; $y++ )
{
$query = "INSERT INTO [yourtablename] (user, school, year) VALUES ('$user', '$school', $y)";
// execute query
}
您还可以在循环中构建和扩展查询,然后执行一次。
$query = "INSERT INTO [yourtablename] (user, school, year)";
for( $y = $year; $y <= $endyear; $y++ )
{
$query .= "VALUES ('$user', '$school', $y)".($y < $endyear ? ',': '');
}
// execute query
您首先想要的是一个不错的PHP工具来连接到您的数据库,比如PDO或ADOdb之类的插件。假设你已经使用PDO构建了你的表结构,它会是这样的:
for( $i = intval($year); $i <= intval($endyear); $i++ )
{
$sql = "INSERT INTO ".DATABASE_TABLE_NAME_CONSTANT." (user, school, year) VALUES (?,?,?)";
$q = $conn->prepare($sql);
$q->execute(array($user,$school,$i));
}
更多关于PDO的信息,点击这里和这里
您还应该养成将所有表名保持为常量的习惯。原因是某些托管服务将您限制为1个数据库。将其保持为常量将允许您在同一数据库中运行项目的沙箱版本和生产版本。您所需要的只是一个不同的前缀,就像在沙盒中一样,您可以在表名前面加上sb_,在生产中加上pr_。例如:
define("USERS_TABLE", $config["tbl_prefix"]."users");
您可以使用auto_increment(在数据库上。我不知道您在使用什么)并将默认值设置为起始年份。