我尝试从 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
WHEREcode_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/