Php 使用准备好的语句在MySql中插入(DATE(now))
我想使用准备好的语句(PHP)将当前日期插入数据库。 这是我目前正在使用的代码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
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);