【问题标题】:php -> sql missing leading zerophp -> sql 缺少前导零
【发布时间】: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

标签: php sql


【解决方案1】:

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

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

【讨论】:

  • 谢谢@adam,完全错过了。
  • 正确的修复是$addQuery = "INSERT INTO nodes (id) VALUES (?)"; 然后准备和绑定。
猜你喜欢
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多