0

我有一个表格,我收集了一堆基本信息(姓名、电子邮件等),然后将其发布到数据库中。在该表单上,我使用 php 日期函数插入“日”、“月”和“年”数据库列,以便显示表单数据提交的日期。

我想将它输出到一个表中(这样我就可以在不登录数据库的情况下检查它),并且我希望该表默认为当前日期。我认为这样的事情会起作用,但它没有:

$query="SELECT * FROM form_data WHERE day='echo date("d");' AND month='echo date("m");' AND year='echo date("Y");'";

最终,我希望有一些显示表格的日期选择框,这样我就可以选择我想要的任何日期,提交并将相关数据返回到表格中。但第一步只是让表格默认显示今天的当前数据。

如果有人可以提供帮助,将不胜感激。

4

4 回答 4

2

为了使线程完整,我将继续并提出建议mysqli::prepare。正如这里所说,它准备查询并返回一个句柄。
防止SQL注入,降低查询解析开销,提高代码可读性。总而言之,使用准备是一个更好的做法。
这就是你的做法:

$database = new mysqli('localhost', 'username', 'password', 'database');
if ($stmt = $database->prepare("SELECT * FROM form_data WHERE day=? AND month=? AND year=?")) {
  $stmt->bind_param('sss', date("d"), date("m"), date("Y"));
  $stmt->execute();
  $result = $stmt->get_result();
  $stmt->close();
}
$database->close();

在上面的代码$result中包含从数据库读取的行。

这是 PDO 版本:

$stmt = $database->prepare("SELECT * FROM form_data WHERE day=? AND month=? AND year=?")
$stmt->execute(array("".date("d"), "".date("m"), "".date("Y")));
于 2012-08-20T03:32:28.940 回答
1

你不能做 echo date("d"); 在 sql 语句中,否则您将有效地将语句放入语句中。

您必须保存您的回声日期(“d”);进入一个变量,然后做类似的事情

$myDay = date("d");
$myMonth = date("m");
$myYear = date("Y");
$query="SELECT * FROM form_data 
        WHERE day='$myDay' 
        AND month='$myMonth' 
        AND year='$myYear'";

或使用分离。像射他们一样

 $query="SELECT * FROM form_data 
         WHERE day='".date("d")."' 
         AND month='".date("m")."' 
         AND year='".date("Y")."'";
于 2012-08-20T03:03:33.103 回答
0

就像是

$query="SELECT * FROM form_data WHERE day='" . date("d") . "' AND month='" . date("m") . "' AND year='" . date("Y") . "'";

应该管用。

调试查询的好方法是将它们作为字符串输出,以查看 PHP 是如何解释它的。

echo "SELECT * FROM form_data WHERE day='" . date("d") . "' AND month='" . date("m") . "' AND year='" . date("Y") . "'"

另请注意,此方法受 SQL 注入的影响。

于 2012-08-20T03:04:35.857 回答
0

我使用它,它对我有用, select * from record where date1=CURDATE() 我希望这是你想要做的

于 2018-07-18T07:55:31.717 回答