我試圖將md5(ID)與id進行匹配。Propel ORM - 自定義where子句
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);
任何想法?
爲什麼不把散列值本地化爲一個新的var,然後將它傳遞給criteria對象?本地化:'$ userPassword = md5($ _ REQUEST ['fs']);'然後傳遞給criteria對象:'$ c-> add(UserPeer :: USER_PASSWORD,$ userPassword,Criteria :: EQUALS);'順便說一下,如果你這樣做,你不必擔心sql注入,因爲散列字符串將被傳遞,而不是被散列的實際值。 – 2012-02-16 06:22:25
由於密碼是明文,我想要MD5(密碼)字段進行比較。這只是一個例子,我不用純文本存儲密碼。 – Luke 2012-02-16 18:50:29
同意的純文本密碼是一個壞主意。但是,在發送到查詢之前,您可以進行散列,以便與數據庫中的散列進行比較。 – 2012-02-16 19:04:13