加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php – 使用PDO插入/更新帮助函数

发布时间:2020-05-25 10:37:29 所属栏目:PHP 来源:互联网
导读:我有一个非常简单的帮助函数来生成传统的简单 mysql驱动程序使用的SET语句: function dbSet($fields) { $set=; foreach ($fields as $field) { if (isset($_POST[$field])) { $set.=`$field`=.mysql_real_escape_string($_POST[

我有一个非常简单的帮助函数来生成传统的简单 mysql驱动程序使用的SET语句:

function dbSet($fields) {
  $set='';
  foreach ($fields as $field) {
    if (isset($_POST[$field])) {
      $set.="`$field`='".mysql_real_escape_string($_POST[$field])."',";
    }
  }
  return substr($set,-2); 
}

这样使用

$id = intval($_POST['id']);
$fields = explode(" ","name surname lastname address zip fax phone");
$_POST['date'] = $_POST['y']."-".$_POST['m']."-".$_POST['d'];
$query  = "UPDATE $table SET ".dbSet($fields)." stamp=NOW() WHERE id=$id";

它使代码相当干燥,同时容易但灵活.

我要问是否有人愿意分享类似的功能,利用PDO准备的语句功能?

我仍然怀疑,怎么做到这一点.
使用PDO准备语句插入数据是否有直接简单的方法?
应该是什么形式?查询构建器助手?还是插入查询助手?应该采取哪些参数?

我希望在SO上可以很容易地被用作答案.因为在每个主题中我们都可以看到准备好的语句使用推荐,但是还没有一个很好的例子.现实生活中的例子,我的意思.键入bind_param()20次不是一个很好的编程风格我相信.
甚至20个问号.

我通常有一个类扩展PDO,但我的类是很自定义的.如果我把它清理和测试,我会在稍后的时间发布.但是,这是一个解决方案.
function dbSet($fields,&$values) {
    $set = '';
    $values = array();

    foreach ($fields as $field) {
        if (isset($_POST[$field])) {
            $set .= "`$field` = ?,";
            $values[] = $_POST[$field];
        }
    }

    return rtrim($set,',');
}

$fields = explode(" ","name surname lastname address zip fax phone date");
$_POST['date'] = $_POST['y']."-".$_POST['m']."-"$_POST['d'];

$query  = "UPDATE $table SET ".dbSet($fields,$values).",stamp=NOW() WHERE id=?";
$values[] = $id;

$dbh->prepare($query);
$dbh->execute($values);

这可能不完美,可以使用调整.它考虑到$dbh是使用PDO连接设置的.在我所做的任何小的语法问题之前,这应该是正常的.

编辑

真的,我想我会去做原则ORM(或另一个ORM).当您设置模型并添加所有验证,那么它就像:

$table = new Table();
$table->fromArray($_POST);
$table->save();

这应该容易地填充内容.这当然是与ORM,如教义.

更新

对第一个代码进行了一些细微的调整,例如将isset和使用rtrim放在substr上.提供模拟PDO扩展类的工作只需布置方式即可完成,并进行一些单元测试以确保其工作.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读