php -> sql 缺少前导零

Posted

技术标签:

【中文标题】php -> sql 缺少前导零【英文标题】:php -> sql missing leading zero 【发布时间】:2021-10-08 11:21:07 【问题描述】:

我正在传递 ID,并对 SQL 数据库进行查询。 ID 由new DateTime() 生成,之后我对其进行格式化。整个工作流程正常工作,建立 SQL 数据库连接并添加 ID。

问题在于前导零,例如今天的日期 08.10.2021。这些在 php 中显示为 08102021..,但在 sql 中添加为 8102021..。前导零消失了。我已经在 sql 中尝试过不同的列类型,例如ncharvarcharint 等。每次都遇到同样的问题。

我错过了什么?

    $date = new DateTime();
    $date = $date->format("dmYHisu");

    $addQuery = "INSERT INTO nodes (id) VALUES ($date)";
 
    if (sqlsrv_query($connection, $addQuery)) 
        echo "Node added.";
     else 
        die (print_r(sqlsrv_errors(), true));
    

我还硬编码了传递的值,每次都是同样的问题。

【问题讨论】:

“我错过了什么?” - 查询中的文本文字分隔符,让数据库知道这应该是字符串值,而不是数字... @ICoded,始终使用参数化语句来防止可能的 SQL 注入问题。有关使用 SQL Server 的 PHP 驱动程序传递和检索 datetime 值的更多信息,请访问 here。 【参考方案1】:

前导零表示它是字符串,因此您必须像这样将单引号放在您的 $date 变量中

$addQuery = "INSERT INTO nodes (id) VALUES ('".$date."')";

【讨论】:

谢谢@adam,完全错过了。 正确的修复是$addQuery = "INSERT INTO nodes (id) VALUES (?)"; 然后准备和绑定。

以上是关于php -> sql 缺少前导零的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 整数中保留前导零 [重复]

PHP date():没有前导零的分钟

不能缺少显示零的天数

sql 在SQL中将前导零添加到数字

sql语句去掉前面的0(前导零,零前缀)

PHP在单个数字之前添加前导零,即时[重复]