php - 将 MySQL 列名映射到变量名

标签 php mysql pdo

如果我使用 PDO 并使用 FETCH_INTO

...
$query->setFetchMode(PDO::FETCH_INTO, $this);
$query->execute();

我有一个小问题。 PHP 变量采用驼峰命名法,但 MySQL 列名采用带下划线。所以我有 creationDatecreation_date

我应该重命名方程的一侧以匹配另一侧,还是通过 __set 魔术方法(使用 switch 命令)进行一些 1:1“映射”?

最佳答案

看看 symfony 的 sfInflector 类,它做同样的工作(在camelize方法中):

http://trac.symfony-project.org/browser/branches/1.4/lib/util/sfInflector.class.php

这是提取的代码:

$tmp = $lower_case_and_underscored_word;
$tmp = sfToolkit::pregtr($tmp, array('#/(.?)#e'    => "'::'.strtoupper('\\1')",
                                     '/(^|_|-)+(.)/e' => "strtoupper('\\2')"));

以及 sfToolkit 中的代码:

public static function pregtr($search, $replacePairs)
{
  return preg_replace(array_keys($replacePairs), array_values($replacePairs), $search);
}

关于php - 将 MySQL 列名映射到变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9942171/

相关文章:

php - Facebook Requests 2.0 Error #200 param ids 中的所有用户必须接受 TOS

php - 如果 id 为 ='3',则始终位于底部(在 MySQL 中使用 `ORDER BY`)

php - 如何根据与现有记录匹配的单个字段值覆盖表中的单个 MySQL 记录?

用于简单插入 MySQL 的 PHP PDO 安全程序

javascript - 刷新 AjaxPOST 数据表上的 CSRF token : CodeIgniter

javascript - 通过 Ajax 调用特定类中的 PHP 函数

php - Laravel 5.1 undefined variable : comments

php - 类方法的 beginTransaction PDO

javascript - 如何使用 php 将我的星级评分值发送到 mysql 数据库

mysql - sql中的平均函数在 View 中不起作用