如何将current_date()替换为用户的任何日期类型

时间:2015-06-05 21:54:07

标签: php sql mysqli

如何将current_date()替换为用户的任何日期类型

示例:

www.example.com/2025-01-04

或任何日期

    <?php
$servername = "localhost";
$username = "11_11";
$password = "1Eh]V";
$dbname = "1_1";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT domain FROM insights_base WHERE domain_1 = current_date() ";
$result = $conn->query($sql);
$data = array();
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
       $data[] = $row;
    }
}
$conn->close();

$smarty = new Smarty;
$smarty->assign('data', $data);
$smarty->display(APP_THEME . '/dom.tpl');

2 个答案:

答案 0 :(得分:0)

试试这个:

<?php
$servername = "localhost";
$username = "11_11";
$password = "1Eh]V";
$dbname = "1_1";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
}
if (isset($_GET['date'])
    and preg_match('/^\d{4}(-\d{2}){2}$/', $_GET['date']) // primitive validation
) {
    $date = $_GET['date'];
} else {
    $date = date('Y-m-d');
}
$sql = "SELECT domain FROM insights_base WHERE domain_1 = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('s', $date);
$stmt->execute();
$stmt->bind_result($domain);
$data = array();
while ($stmt->fetch()) {
   $data[] = array('domain' => $domain);
}
$conn->close();

$smarty = new Smarty;
$smarty->assign('data', $data);
$smarty->display(APP_THEME . '/dom.tpl');

答案 1 :(得分:0)

我建议在这里使用准备好的声明(假设您使用的是mysqli) A)因为您可以使用用户输入值动态地将current_date()或变量分配给占位符。
B)由于您要转义所有用户输入,准备好的语句会使此操作更安全。

if (!empty($_POST['date'])) {
    $user_date = $_POST['date'];
} else {
    $user_date = "current_date()";
}

$sql = "SELECT domain FROM insights_base WHERE domain_1 = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $user_date);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$data = [];
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
       $data[] = $row;
    }
}

根据您从用户那里获取日期的方式,您可能需要对其进行验证,以确保它的格式与mysql的日期/时间相符。