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 中尝试过不同的列类型,例如nchar
、varchar
、int
等。每次都遇到同样的问题。
我错过了什么?
$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 缺少前导零的主要内容,如果未能解决你的问题,请参考以下文章