PDO的奇怪行为

时间:2017-09-05 22:39:09

标签: php mysql pdo

一天的美好时光!

我的主人项目已经完成了一项任务,即开发移动应用程序而不使用任何可用的框架(我的意思是Symfony / Laravel / Phalcon等)。

由于我曾经和Laravel工作过很多,所以我一直试图在我自己的#34;框架中重新创建Laravel中的一些方法。

然而,我在使用PDO时遇到了一个非常奇怪的问题 这是我想要做的:

  1. 我想使用User模型的User::create([]);方法创建用户(是的,我重新创建了模型系统)。
  2. 如果我从数据库中检索数据,则获取正确的数据没有问题。即使User::where('name', 'User Name')->orWhere('name', 'User Name')->first()->toArray()链工作正常(查询不是"变形")
  3. 创建后,SQL查询看起来很好(在使用str_replace执行之前将其转储)
  4. 执行查询后,数据库将仅填充来自一列(最后一列)的数据
  5. 以下是create(array $parameters)方法:

    try {
            $reference = (new static);
            $sqlStatement = sprintf('INSERT INTO %s (%s) VALUES (', $reference->table, implode(', ', $reference->fillable));
            foreach ($parameters as $key => $value) {
                $reference->$key = $value;
                $sqlStatement .= ':' . $key . ', ';
            }
            $sqlStatement = rtrim($sqlStatement, ', ') . ')';
            $statement = $reference->connection->prepare($sqlStatement);
            foreach ($parameters as $key => $value)
                $statement->bindParam(':' . $key, $value);
            $statement->execute();
            return $reference;
        } catch (\PDOException $exception) {
            dd($exception);
        }
    

    我真的不知道这里有什么问题,因为PHP和SQL部分看起来很好。 任何帮助或想法都非常感谢!

0 个答案:

没有答案