0

class Application_Model_DbTable_Email extends Zend_Db_Table_Abstract
{

protected $_name = 'memberdetail';  

public function sendEmail($email)
{

    $email = $_POST['email'];
    $userid = ($this->select('userid')
            ->from('usertable', 'memberdetail')
            ->where('usertable.userid = memberdetail.memberid AND memberdetail.memberid = (SELECT memberid FROM memberdetail WHERE email = ?)', "".$email. "'"));

    $reset = new Application_Model_DbTable_Register();
    $reset->resetPass($userid);

    $pswd = new Application_Model_DbTable_Register();
    $pswd = $pswd->getTemp();

    $mail = new Zend_Mail();

    $mail->setFrom('swap.test@yahoo.com.sg', 'Inexorable Beauty');
    $mail->addTo($email, $email);
    $mail->setSubject('Inexorable Beauty: Password Reset');
    $mail->setBodyText('Dear Customer,

            You have requested to reset your password.
            This is the temporary password: '.$pswd.'

            Please log in immediately and change your password.
            Thank You.

            Yours Sincerely,
            Inexorable Beauty');

    $mail->send();

    if($mail->send())
    {
        echo "Email successfully sent!";
    }
    else
    {
        echo "Email was not sent";
    }



}

メンバー ID から参照されるユーザー ID を取得しようとしています。$_POST['email'] を実行した電子メールから memberid を取得できます。問題は、ユーザー ID の値を取得できないように見えることです。while ループでユーザー ID をエコーし​​ようとしましたが、うまくいきません。SQL を印刷すると、私が書いたものとは別のステートメントになっているようです。

4

1 に答える 1

1

次のようにクエリを実行してみてください。

$email = $_POST['email'];
$subquery = $db->select()
               ->from('memberdetail', array('memberid'))
               ->where('email = ?', $email);

$select = $db->select()
             ->from('usertable', array('userid'))
             ->join('memberdetail', 'usertable.userid = memberdetail.memberid')
             ->where('usertable.userid = ?', $subquery);

$result = $select->query()->fetch();
if (!$result) {
    // user not found
} else {
    $userid = $result['userid'];
}

現在の方法$useridは単なるZend_Db_Selectオブジェクトですが、クエリは実行されません。また、 にパラメーターを渡さずselect()、メソッドで必要な列を指定しますfrom()

于 2012-08-11T21:39:49.303 に答える