PHP MySQL PDO:如何保留 Zerofill int 列的前导零

2023-11-21

我在从旧的迁移之路上又遇到了一个坎坷mysql_*()新 PDO 类的函数: 我有一个下表:

CREATE TABLE `test` (
  `Id` tinyint(4) unsigned zerofill NOT NULL,
  `UserName` varchar(4) NOT NULL,
  `TestDecimal` decimal(6,0) unsigned zerofill DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

注意填零Id and TestDecimal fields.

如果我使用旧的运行以下代码mysql_*()功能:

$SqlQuery = "SELECT * FROM test";
$Sql_Result = mysql_query($SqlQuery);
var_dump(mysql_fetch_array($Sql_Result));

我得到以下输出,其中正确填零Id column:

array (size=6)
  0 => string '0001' (length=4)
  'Id' => string '0001' (length=4)
  1 => string 'alex' (length=4)
  'UserName' => string 'alex' (length=4)
  2 => string '000002' (length=6)
  'TestDecimal' => string '000002' (length=6)

但是,如果我使用 PDO 执行相同操作,如下所示:

$SqlQuery = "SELECT * FROM test";
$SqlResult = $MysqlPDO->prepare($SqlQuery);
$SqlResult->execute();
var_dump($SqlResult->fetch(PDO::FETCH_BOTH));

我得到这个输出错误地非零填充Id column:

array (size=6)
  'Id' => int 1
  0 => int 1
  'UserName' => string 'alex' (length=4)
  1 => string 'alex' (length=4)
  'TestDecimal' => string '000002' (length=6)
  2 => string '000002' (length=6)

看起来 PDO 类正在查看 PHP 中的列类型并返回匹配的变量类型(在本例中为整数)。 经过一番搜索后我发现PDO::ATTR_STRINGIFY_FETCHES属性可以设置为强制所有 MYSQL 结果作为字符串返回,虽然这似乎有效(我得到一个字符串而不是 int),但它仍然不返回前导零:

array (size=6)
  'Id' => string '1' (length=1)
  0 => string '1' (length=1)
  'UserName' => string 'alex' (length=4)
  1 => string 'alex' (length=4)
  'TestDecimal' => string '000002' (length=6)
  2 => string '000002' (length=6)

它似乎可以正确地与decimal(6,0) zerofill场,但不与tinyint(4) zerofill场地... 有什么方法可以使这项工作正常进行,或者我是否必须检查我的代码库并找出此更改的问题(我已经确定了一些不再工作的事情......)?

演示代码.


你可以使用LPAD?

尝试这个:SELECT *, LPAD( Id, 3, '0') AS zero_Fill_Id FROM test

应改变3根据 int 大小:对于这种情况可能是 4?

Update:

我不认为将 int 更改为十进制是一个好的做法,为什么我不会更深入地讨论这个问题,您可以搜索该主题。

我想你用mysqlnd驱动程序,我发现了什么(检查是否启用如何知道 MySQLnd 是否是活动驱动程序?):

使用 mysqlnd 进行 PDO 的优点

mysqlnd 返回本机数据类型 使用服务器端准备好的语句, 例如返回 INT 列 作为整数变量而不是 细绳。这意味着更少的数据 内部转换。

source: 如何使用 PDO 从 MySQL 获取数字类型?

在这种情况下有PDO::ATTR_STRINGIFY_FETCHES在你的情况下应该设置为true,你也可以尝试PDO::ATTR_EMULATE_PREPARES属性进一步参见:PDO MySQL:是否使用 PDO::ATTR_EMULATE_PREPARES?

...
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);

希望这对任何情况或任何人都有帮助:))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP MySQL PDO:如何保留 Zerofill int 列的前导零 的相关文章

  • 我们可以在 Bash 脚本中使用 PHP 吗?

    我有一个 bash 脚本abcd sh bin sh for i in seq 8 do ssh w i uptime ps elf grep httpd wc l free m mpstat done pid sleep 1 kill 9
  • 如何在 SQLite 中获取最后插入的 ID?

    SQLite 中是否有任何内置函数可以获取最后插入的行 ID 例如 在 mysql 中我们有LAST INSERT ID 这种功能 对于 sqlite 任何可用于执行相同过程的函数 请帮我 Thanks SQLite 这可以使用SQLite
  • WooCommerce 自定义字段 - 多选

    我在 WooCommerce 的结账页面添加额外的字段 我可以添加文本框等基本字段 但需要添加一个 多 选择框 用户可以在其中选择多个项目 我已经弄清楚如何通过代码添加选择框 如下所示 add action woocommerce afte
  • 传递给 Illuminate\Routing\Middleware\ThrottleRequests::addHeaders() 的参数 1 必须是以下实例

    我创建了一个新的中间件来检查用户令牌我创建了中间件然后添加到 kernal php 但是当我尝试访问中间件中的 request 时我收到错误 这是我的中间件代码 namespace App Http Middleware use Illum
  • 如何在PHP中完成http响应并进行进一步处理?

    就我而言 我需要向客户端回显一个标志并发送一封电子邮件 现在客户端需要等待电子邮件发送 但我想把这两个步骤分开 该怎么做呢 你可以看一下异步运行 PHP 任务 https stackoverflow com questions 858883
  • 项目链接在 Wamp 服务器上不起作用

    我正在另一台计算机上安装 Wamp 服务器来运行中型数据库和 UI 我已成功阻止 IIS 并将服务器路由到 Localhost 8080 但是每当我尝试从 localhost 主页访问我的项目时 在 www 文件中 我被重定向到页面未找到错
  • phpenmod 显示其他 php 版本的路径

    我的 Ubuntu 机器上安装了 php 7 0 和 7 2 当我执行时php v 它告诉我我正在使用 php 7 2 在 Apache 上我还启用了 php 7 2 当我跑步时phpenmode zip 我明白了 WARNING Modu
  • ORDER BY 之后的 GROUP BY

    我需要去做GROUP BY after ORDER BY 我不明白为什么 MySQL 不支持这一点 这是我的代码 SELECT pages id contents id language ORDER BY FIND IN SET langu
  • 使用活动目录对 Intranet 站点上的用户进行身份验证

    我建立了一个 内联网 站点 它有自己的登录系统 用户注册为新用户 并使用其上的用户名 密码登录该站点 但是 现在我想扩展它 让 Intranet 站点使用现有的 ActiveDirectory 进行身份验证 这就是我正在寻找的 前进 当用户
  • 如何使用 Google Calendar API 和官方 PHP 库创建全天活动?

    我有这个代码 event new Event event gt setSummary event summary event gt setLocation event location start new EventDateTime sta
  • 根据重复值对 PHP 数组进行排序

    我有一个包含重复值的数组 我想对数组进行排序 以便重复次数最多的值出现在行中的第一个 这是我的数组的示例 array 1 2 3 2 1 2 2 我想对该数组进行排序 以便它根据重复项的数量对自身进行排序 如下所示 array 2 1 3
  • 错误代码 13,SELECT INTO OUTFILE 问题

    我试图了解使用 INTO OUTFILE 命令时不断遇到问题的原因 我总是收到这个错误 ERROR 1 HY000 Can t create write to file var www p1 txt Errcode 13 SELECT pa
  • zend框架验证模型中的数据而不是表单中的数据

    使用 Zend Framework 2 在我的应用程序中 要编辑数据库中的数据 可以编译 html 表单或发送 http post 请求 我的服务器作为 Web 服务实现 在第二种情况下 不会呈现表单 问题 如果当服务器收到不是从表单发送而
  • 有没有办法只安装mysql客户端(Linux)? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有不需要安装整个mysql db安装包的Linux mysql命令行工具 我想做的是从服务器 1 应用程序服务器 执行将在服务器 2
  • 将 Base64 字符串转换为图像文件? [复制]

    这个问题在这里已经有答案了 我正在尝试将我的 Base64 图像字符串转换为图像文件 这是我的 Base64 字符串 http pastebin com ENkTrGNG http pastebin com ENkTrGNG 使用以下代码将
  • 访问 PHP 数组对象受保护的属性

    我正在尝试在 Symfony2 中上传多个文件 我正在尝试访问以下请求对象 但无法获取参数属性 如何将文件一一上传 我得到的错误 致命错误 无法访问第 66 行 var www File src Webmuch FileBundle Ent
  • MySQL 中的 group_concat 性能问题

    我添加了一个group concat到一个查询并杀死了性能 添加之前和之后的解释计划是相同的 所以我对如何优化它感到困惑 这是查询的简化版本 SELECT curRow curRow 1 AS row number docID docTyp
  • Nginx 安全链接模块不适用于 php 文件,但适用于静态文件

    我在用http nginx org en docs http ngx http secure link module html http nginx org en docs http ngx http secure link module
  • 在 Elasticsearch php API 中使用多种类型或索引

    我想使用查询多种类型和索引Elasticsearch PHP API 但我不知道怎么办 我应该将类型和索引的数组传递给 params params index index array of indices params type types
  • 如何强制下载图片?

    我的页面上有一个动态生成的图像 如下所示 img src 我不想告诉我的用户右键单击图像并点击保存 而是想公开一个下载链接 单击该链接将提示下载图像 如何实现这一目标 最初我在 js 中尝试这样做 var path my image att

随机推荐

  • 在 Jquery 中创建随机下落物体

    我试图让div从上到下下降 这是我尝试过的代码 但它不能满足我的需求 我想在准备好后生成 20 div 然后如何使该 20 div 持续从上到下一致地下降 在 jquery 中是否可以做到这一点 http jsfiddle net MzVF
  • Javamail 和 Gmail Pop3 SSL

    我正在尝试将我的应用程序连接到 Gmail 以检查电子邮件 我必须对 POP3 使用 SSL 这是我的代码 Properties props new Properties props put mail host pop gmail com
  • 检查是否连接到Wi-Fi网络C#

    有没有办法检查电脑是否连接到wifi网络 另外 如果已连接 我想要 SSID 可能的 检查互联网连接的部分在这里回答 C 检查互联网连接 SSID部分在这里回答 获取我在 Windows Vista 上使用 C Net 连接到的无线网络的
  • 使用 JQuery 计时器调用 js 函数

    无论如何 有没有办法为 JQuery 实现计时器 例如 每10秒需要调用一个js函数 我尝试了以下方法 window setTimeout function alert test 10000 但这只执行一次 然后就不会再执行了 你可以使用这
  • str.format() -> 如何左对齐

    gt gt gt print there are 0 10 students and 1 10 teachers format scnt tcnt there are 100 students and 20 teachers 输出的代码是什
  • Android - Retrofit 2 - 身份验证器结果

    我正在尝试使用 Retrofit 2 0 0 beta3 但是当使用身份验证器添加令牌时 我似乎无法从同步调用中获取数据 我们在后端的日志记录只显示了很多登录尝试 但我无法从正文中获取数据来实际添加到标头中 public static cl
  • Rails 和 MSSQL 2008 - 我们会遇到障碍吗?

    我工作的公司正在寻求将平台从 ColdFusion 8 Windows 切换到 Ruby on Rails Linux 我们的数据库解决方案将保留为 Windows 上的 MSSQL 2008 我可能会单独跟进与此迁移相关的一系列问题 但现
  • 无法识别的字体系列材质图标?

    我是 React Native 的新手 我已手动将react native vector icons 库添加到 Xcode 和 Android studio 中 如果使用 Xcode 运行代码 则可以成功执行 没有任何问题 但如果我尝试从终
  • Delphi 多线程消息循环

    我的应用程序有几个线程 1 主线程 2 2个子主线程 每个都有消息循环 如下所示 由TFQM使用 3 n个工作线程 简单循环 包含Sleep 我的问题是 当我关闭应用程序时 工作线程设法正确退出 但是当我发出 WM QUIT 关闭它们时 2
  • 访问 NSArray 的随机元素时的 EXC_ARITHMETIC

    我试图随机获取数组的值 但出现错误 到目前为止 这是我的代码 NSMutableArray validMoves NSMutableArray alloc init for int i 0 i lt 100 i validMoves rem
  • Workflow Foundation 4 中的依赖注入/IoC

    是否可以在您的工作流程活动中使用 DI 如果是 怎么办 例如 如果您有类似的活动 public sealed class MyActivity CodeActivity public MyClass Dependency get set p
  • Rest,Spring 自己的 OAuth2 服务器 + OAuth2 提供商,如 Facebook、Google、Yahoo

    在 Spring Boot 应用程序中 我使用 Spring Security 和 Spring OAuth2 保护我的 Spring MVC REST 端点 我有自己的授权 资源服务器 因此为了与我们的 API 通信 客户端 Angula
  • 如何将自定义微调器图像应用到 Android 中的进度对话框

    您好 我尝试将自定义微调器图像应用到 Android 中的进度对话框 我使用 gif 文件来实现此目的 并通过此代码应用它 dialog new ProgressDialog BackupRestoreActivityContext dia
  • 如何正确使用registerForActivityResult?获取“LifecycleOwners 必须在开始之前调用寄存器”

    I use registerForActivityResult就像 package com example livedata import android Manifest import android app Activity impor
  • Maven - 从构建中排除文件夹

    尝试排除文件夹src main resources scripts 从我的构建 但以下不起作用
  • NHibernate 的 T4 模板? - 不流畅的 NHibernate

    想知道是否有人知道一组 T4 模板 用于生成 C POCO 类 以及从数据库中的一组表映射 NHibernate 的 XML 文件 我看到 David Hayden 创建了 T4 用于基于 DBML 模型生成 FluentNH 代码 但我还
  • 如何从同一 YAML 文件中的其他位置引用 YAML“设置”?

    我有以下 YAML paths patha path to root a pathb path to root b pathc path to root c 我怎样才能通过删除来 正常化 这个 path to root 来自三个路径 并将其
  • 优化 javascript 和 css 请求

    我需要优化几个现有网站的加载速度 我遇到的问题之一是每页的请求量 这些网站有 7 个或更多不同类型的页面 它们应该加载不同的 css 和 javascript 集 因为它们包含不同的小部件或功能 目前 每个小部件或功能都有自己的 javas
  • smartgit 删除提交并返回到上一个提交

    我错误地进行了一次提交 现在我想从历史日志中删除并返回到以前的提交 我一直在尝试检查我想要返回的提交 但 Smartgit 要求我创建一个本地分支才能执行此操作 附有屏幕截图 并且由于我不是 SG 专家 所以我确实需要一些建议 我还尝试恢复
  • PHP MySQL PDO:如何保留 Zerofill int 列的前导零

    我在从旧的迁移之路上又遇到了一个坎坷mysql 新 PDO 类的函数 我有一个下表 CREATE TABLE test Id tinyint 4 unsigned zerofill NOT NULL UserName varchar 4 N