Php 使用准备好的语句在MySql中插入(DATE(now))

Php 使用准备好的语句在MySql中插入(DATE(now)),php,mysql,Php,Mysql,我想使用准备好的语句(PHP)将当前日期插入数据库。 这是我目前正在使用的代码 <?php if(isset($_POST['confirm'])){ $user_id = $_SESSION['user_id']; $user_name = $_SESSION['customer_name']; $user_email = $_SESSION['customer_email']; $get_text1 = $_POST['titl

我想使用准备好的语句(PHP)将当前日期插入数据库。 这是我目前正在使用的代码

<?php
     if(isset($_POST['confirm'])){
      $user_id = $_SESSION['user_id'];
      $user_name = $_SESSION['customer_name'];
      $user_email = $_SESSION['customer_email'];
      $get_text1 = $_POST['title'];
      $sql = $con->prepare("INSERT into free_ad(user_id, user_name, user_email,title,timenow) values 
     (?,?,?,?,(DATE(now)))");
      $sql->bind_param("isss",$user_id,$user_name,$user_email,$get_text1);
      $sql->execute(); 
 }
?>

您可以尝试以下方法。在SQL中使用
NOW()
来获取当前日期,而不是绑定

   <?php
     if(isset($_POST['confirm'])){
      $user_id = $_SESSION['user_id'];
      $user_name = $_SESSION['customer_name'];
      $user_email = $_SESSION['customer_email'];
      $get_text1 = $_POST['title'];
      $sql = $con->prepare("INSERT into free_ad(user_id, user_name, user_email,title,timenow) values 
     (?,?,?,?,NOW())");
      $sql->bind_param("isss",$user_id,$user_name,$user_email,$get_text1);
      $sql->execute(); 
 }

解决方案1:数据库端(推荐选择)

您可以使用curdate()完成MySQL中实际可用的工作,在这种情况下,只需更改以下行:

$sql = $con->prepare("INSERT into free_ad(user_id, user_name, user_email,title,timenow) values 
     (?,?,?,?,(DATE(now)))");
$sql->bind_param("isss",$user_id,$user_name,$user_email,$get_text1);
$sql = $con->prepare("INSERT into free_ad(user_id, user_name, user_email,title,timenow) values 
     (?,?,?,?,(DATE(now)))");
$sql->bind_param("isss",$user_id,$user_name,$user_email,$get_text1);

解决方案2:应用程序端

您还可以使用应用程序端日期(运行PHP的web服务器的日期),在这种情况下,您可以使用date()函数。例如日期('Y-m-d')。 因此,请尝试更改以下两行:

在启用并运行NTP的现代服务器中,如果使用相同的区域设置,则这两个时间应该相同


但是,如果两台服务器中都没有应用NTP,则两台服务器中的日期时间数据可能会不同。在这种情况下,您必须决定使用哪一台。(最好使用解决方案1)。在这里添加解决方案2只是为了说明,如果有一段数据在数据库端不可用,您可以切换到使用应用程序端作为解决方案。

问题出在哪里?它起作用了吗?你有错误吗?为什么不干脆
NOW()
?@tadman它不插入任何value@tadmanNOW()似乎可以工作,但是我只需要不带时间的日期这是否会进入
date
字段?如果是这样的话,它应该被剥离。只需感谢您的输入。虽然这会起作用,但我不需要使用NOW()来增加日期附带的“时间”。您是否有
date
列?@abbaszaidi然后将
NOW
替换为
CURDATE
。不必也不建议在应用程序端执行日期部分。应用程序服务器时间和数据库服务器时间之间可能存在差异。如有必要,使用
DATE(NOW())
,如果可以接受截断,则使用
NOW()
$sql = $con->prepare("INSERT into free_ad(user_id, user_name, user_email,title,timenow) values 
     (?,?,?,?,(DATE(now)))");
$sql->bind_param("isss",$user_id,$user_name,$user_email,$get_text1);
$currentdate=date('Y-m-d');
$sql = $con->prepare("INSERT into free_ad(user_id, user_name, user_email,title,timenow) values 
     (?,?,?,?,?)");
$sql->bind_param("issss",$user_id,$user_name,$user_email,$get_text1, $currentdate);