使用预处理语句PHP将一个月的日期插入数据库

时间:2014-09-18 05:40:53

标签: php mysql sql

我正在尝试构建一个用户可以在一个月内每天插入数据的应用程序。 要做到这一点,我需要让用户创建某个月的所有日子(例如:当月)。

点击一个按钮,我希望它获得当前月份,然后使用该数据获取所有日期,并为每个月制作SQL插入内容。

例如:

$monthname=date('F');
$monthnumber=date('m');
$getyear=date('Y');

    Loop this until it has inserted all days of $monthnumber:
INSERT INTO $monthdatadays (id, dayname, daynumber, monthname, $monthnumber, year, data1, data2) VALUES ('', '$dayname', 'day1', '$monthname', '$monthnumber', '$getyear', '$somedata', '$somedata2')
INSERT INTO $monthdatadays (id, dayname, daynumber, monthname, $monthnumber, year, data1, data2) VALUES ('', '$dayname', 'day2', '$monthname', '$monthnumber', '$getyear', '$somedata', '$somedata2')
INSERT INTO $monthdatadays (id, dayname, daynumber, monthname, $monthnumber, year, data1, data2) VALUES ('', '$dayname', 'day3', '$monthname', '$monthnumber', '$getyear', '$somedata', '$somedata2')
Until the end of the month, but then months do have different amount of days.

我如何使用这样的准备语句来实现这一目标:

if($exampleps= $mysqli->prepare("INSERT INTO $pstable(id, name, summary, full, closedopen, createdby, createdat, editedby, editedat, date, time)VALUES('', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"))
{
$exampleps -> bind_param("ssssssssss", $name, $summary, $full, $status, $createdby, $createdat, $editedby, $editedat, $date, $time);
$exampleps -> execute();
$exampleps -> close();
}

2 个答案:

答案 0 :(得分:0)

您可以使用MySQL NOW()函数返回当前日期和时间。

<强> E.g。

mysqli_query("INSERT INTO users (first, last, date_time) VALUES ('$first', '$last', now())");

您可以申请

  $mysqli->prepare("INSERT INTO $pstable(id, name, summary, full, closedopen, createdby, createdat, editedby, editedat, date, time) VALUES('', ?, ?, ?, ?, ?, now(), ?, now(), CURDATE(),CURTIME())");

答案 1 :(得分:0)

你需要每天循环。您可以使用DatePeriod。例如:

// setup dates
$begin = new DateTime();
$end = new DateTime();
$begin->modify('first day of this month');
$end->modify('last day of this month');
$interval = new DateInterval('P1D'); // 1 day interval
$range = new DatePeriod($begin, $interval, $end);

$mysqli = new mysqli('localhost', 'username', 'password', 'db');
$sql = "INSERT INTO $monthdatadays (id, dayname, daynumber, monthname, $monthnumber, year, data1, data2) VALUES ('', ?, ?, ?, ?, ?, ?, ?)";
$stmt = $mysqli->prepare($sql);

foreach($range as $k => $date) {

    $somedata = 'whatever';
    $somedata2 = 'whatever';
    $dayname = $date->format('l');
    $day = 'day' . $date->format('j');
    $monthname = $date->format('F');
    $monthnumber = $date->format('n');
    $year = $date->format('Y');

    $stmt->bind_param('sssssss', $dayname, $day, $monthname, $monthnumber, $year, $somedata, $somedata2);
    $stmt->execute();
}