2013-03-10 13 views
0

我正在使用POP PHP框架(http://www.popphp.org/)。我試圖編寫一個準備好的語句來檢查電子郵件地址是否已經存在或不在數據庫中。準備好的語句像POP PHP框架

挖掘手冊我找不到任何關於如何比較文本字符串與數據庫結果的例子,只有數字。要做到這並不難,就像:

$sql->select()->where()->greaterThanOrEqualTo('id', '?'); 

但是,如果電子郵件地址的存在與否進行比較,我無法找到解決方案。以下是我不完整的代碼。第6行是我嘗試做比較的地方。由於不支持,請不要輸入錯誤。郵件地址存在於數據庫中,所以沒有任何問題。

// Check if user already exists 
$db = Db::factory($this->type, $this->creds); 

// Create a prepared statement 
$sql = new Sql($db, 'user'); 
$sql->select()->where()->like('email', '?'); 

// Prepare the statement, bind the parameters and execute 
$db->adapter()->prepare('email', '?'); 
$db->adapter()->bindParams(array('email' => $post['email'])); 
$db->adapter()->execute(); 


print_r($db->adapter()->fetch()); 


if($db->adapter()->fetch() != false) 
{ 
    $error['userExists'] = "User exists"; 
    echo "Exists"; 
} 

我應該怎麼做才能完成這段代碼?

回答

0

我不知道POPPHP,但在檢查API,看來你所尋找的是Pop\Db\Sql\Predicate::equalTo($column, $value, $combine),例如:

$sql->select()->where()->equalTo('email', '?'); 
+0

謝謝你把我在正確的方向。正確的代碼如下:\t \t \t'//檢查用戶是否已經存在 \t \t \t $ db = Db :: factory($ this-> type,$ this-> creds); \t \t \t \t \t \t //創建一個事先準備好的聲明 \t \t \t $ SQL =新的SQL($分貝, '用戶'); \t \t \t $ sql-> select() - > where() - > equalTo('email','?'); \t \t \t \t \t \t echo $ sql。 '
'。 PHP_EOL; \t \t \t \t \t \t \t \t \t \t \t \t \t \t //準備語句,綁定參數和執行DB- \t \t \t $>適配器() - >準備($的SQL); \t \t \t $ db-> adapter() - > bindParams(array('email'=> $ post ['email'])); \t \t \t $ db-> adapter() - > execute();' – Robert 2013-03-10 15:27:11