PHP-MySQL日期时间到字符串转换不工作

luaexgnf  于 2023-01-04  发布在  PHP
关注(0)|答案(1)|浏览(124)

我需要将数据插入到包含当前日期时间的MySql单元格中,但我没有得到它。我得到的唯一的东西是***"致命错误:未捕获的错误:无法在mysqli_query行将DateTime类的对象转换为字符串"*
我看到一个包含固定日期的解决方案,如
"DateTime('2000 - 01 - 01')",但我需要"现在"日期时间**。

$saleend = new DateTime();

date_add($saleend,date_interval_create_from_date_string("$saledays days, $salehours hours, 00 minutes, 00 seconds"));

$saleend->format('Y-m-d H:i:s');

mysqli_query($conn, "UPDATE tableName SET SALEEND = '$saleend' WHERE ID = '$id'");
w9apscun

w9apscun1#

我强烈建议不要在你的应用程序中使用字符串连接,而是使用更安全的预准备语句。我已经制作了一个预准备语句并测试了它的操作:

<?php

mysqli_report(MYSQLI_REPORT_ERROR|MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("127.0.0.1", "test", "password", "testdb");

$saleend = new DateTime();
$saledays = 1;
$salehours = 10;
date_add($saleend,date_interval_create_from_date_string("$saledays days, $salehours hours, 00 minutes, 00 seconds"));

/* Use a prepared statement */
$stmt = $mysqli->prepare("UPDATE tableName SET SALEEND = ? WHERE ID = ?");

$id = 1;
$timechange = $saleend->format('Y-m-d H:i:s');

// The "si" stands for $saleend is a string ("s") and $id is an integer ("i").
$stmt->bind_param('si', $timechange, $id);

$stmt->execute();
print $stmt->error; //to check errors

调试完应用程序后,可以删除mysqli_report()print $stmt->error;行。
prepare()行设置替换,然后bind_param()在安全的服务器端进行交换,execute()将查询发送到服务器。
下面是我运行这段代码之前的表:
| 识别号|销售|
| - ------| - ------|
| 1个|2022年1月3日01:14:47|
之后:
| 识别号|销售|
| - ------| - ------|
| 1个|2023年1月4日16时40分51秒|

相关问题