我正在尝试将md5(ID)与id匹配。
SELECT *
FROM `user` u
WHERE
MD5(`user_id`) = '66f041e16a60928b05a7e228a89c3799'
这是ID = 58
我试过这样的事情。我知道我很接近我只是不知道我错过了什么
$criteria = new Criteria();
$criteria->addAnd('md5('.User::USER_ID.')', $_REQUEST['fs'], Criteria::CUSTOM);
$user = UserPeer::doSelectOne($criteria);
有什么想法吗?
答案 0 :(得分:3)
首先,不建议直接使用Criteria对象不赞成。您应该使用Active Query classes。
使用这些类,您将能够编写如下内容:
UserQuery::create()
->where('md5(User.Password) = ?', $_REQUEST['fs'], PDO::PARAM_STR)
->findOne();
您会注意到我在查询中使用了表和列的PhpName。
编辑:对于原始条件,必须指定参数类型。您可以在this issue找到更多信息。
答案 1 :(得分:1)
经过长时间的T& E流程后,我设法完成了这样的工作
$c = new Criteria();
$c->add(UserPeer::USER_ID, "md5(user.user_id) = \"".$_REQUEST['fs']."\"", Criteria::CUSTOM); // risk of SQL injection!!
$saved_search = UserPeer::doSelectOne($c);
由于某种原因,PropelORM虽然$ _REQUEST ['fs']是表的名称而不是值。 \“”解决了这个问题。