1

这是我第一次编程,我需要一些帮助。我有一个代码,我从表单中获取 $year,我想将其递增到年底并将结果插入数据库:

include 'conect.php';

$user=  $_POST['user'];
$school= $_POST['school'];
$year= $_POST['year'];
$endyear= $_POST['endyear'];

插入数据库应该重复这些变量,直到 $endyear,如下所示:

第 1 行:
用户:约翰
学校:UFPS
年份:2010

第 2 行:
用户:约翰
学校:UFPS
年份:2011

第 3 行:
用户:约翰
学校: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

4

3 回答 3

3

假设您已经针对 SQL 注入攻击清理了 POST 数据,您可以使用循环:

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
于 2013-08-04T01:07:22.477 回答
0

您想要的第一件事是一个不错的 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");
于 2013-08-04T01:48:34.077 回答
-1

您可以使用 auto_increment (在数据库上..我不知道您在使用什么)并将默认值设置为起始年份。

于 2013-08-04T01:09:14.877 回答