sql - 质疑 Doctrine 1

标签 sql doctrine symfony1 doctrine-1.2

我尝试从 phpMyAdmin 进行以下 sql 查询,该查询运行良好,并返回 1 个符合 Doctrine 1 的结果,但出现异常:

SQLSTATE[42S22]: Column not found: 1054 Champ 'MOY1100' inconnu dans where clause. Failing Query: "select id_au FROM acteur_unite WHERE code_unite = MOY1100 LIMIT 1"

这里是在 phpMyAdmin 上工作的 sql 查询:

SELECT id_au FROM acteur_unite WHERE code_unite = 'MOY1100' LIMIT 1

这是我对 Doctrine 的疑问:

 public function getId($code_unite) {

        $con = Doctrine_Manager::getInstance()->connection();

        $st = $con->execute("select id_au FROM acteur_unite
            WHERE code_unite = $code_unite LIMIT 1");

        $id = null;
        // fetch query result
        $data = $st->fetch(PDO::FETCH_ASSOC);
        $id = $data['id_au'];
        return $id;
    }

我哪里错了?

提前非常感谢

最佳答案

似乎您错过了 var $code_unite 周围的引号

  $st = $con->execute("select id_au FROM acteur_unite
        WHERE code_unite = '$code_unite' LIMIT 1");

但要小心在 sql 中使用 var .. 您面临 sql 注入(inject)的风险。然后以正确的方式检查您的框架的 param_binding ..以避免这种风险

例如:

  $st = $con->execute("select id_au FROM acteur_unite
    WHERE code_unite = :code_unite LIMIT 1");

  $st->bindParam(':code_unite', $code_unite, PDO::PARAM_STR);

关于sql - 质疑 Doctrine 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48558453/

相关文章:

mysql - Symfony+ Doctrine : Correct YAML syntax for default value of boolean field

php - 如何在 propel 查询中添加别名

MySQL 错误 (HY000) : Cannot add foreign key constraint

java - 用于填充多个表的复选框和 sql 命令的对象名称

php - 如何防止PHP中的SQL注入(inject)?

sql - PostgreSQL 中的递归

symfony - Doctrine 扩展实体

symfony - Knp DoctrineBehaviors 抛出 ContextErrorException : Warning: call_user_func_array() expects parameter 1 to be a valid callback

php - 与 codeigniter(php 框架)一起使用的最佳 ORM 是什么?为什么?

php - 如何根据语言环境格式化日期?