簡體   English   中英

用多個where更新zend db

[英]update zend db with multiple where

當我執行致命錯誤時,我的查詢出了問題。

$select = $db->select()
    ->from('test', '*')
    ->where('user_id = ?', 1)
    ->where('url is NULL');
$Details = $db->fetchAll($select);

foreach ($Details as $row1) {
    $PublicId = $row1['public_id'];
    $data = array('password' => $randomString , 'flag' => 1);

    $db->update("test", $data, 'public_id =' . $PublicId);
    $pass = $row1['password']; 
}

錯誤是:

致命錯誤:未捕獲異常'PDOException',消息'SQLSTATE [42S22]:未找到列:1054在C:\\ xampp \\ php \\ PEAR \\ Zend \\ Db \\ Statement \\ Pdo中'where子句'中的未知列'wdefabcghbcla45'。 php:228堆棧跟蹤:#0 C:\\ xampp \\ php \\ PEAR \\ Zend \\ Db \\ Statement \\ Pdo.php(228):PDOStatement-> execute(Array)#1 C:\\ xampp \\ php \\ PEAR \\ Zend \\ Db \\ Statement.php(300):Zend_Db_Statement_Pdo - > _ execute(Array)#2 C:\\ xampp \\ php \\ PEAR \\ Zend \\ Db \\ Adapter \\ Abstract.php(479):Zend_Db_Statement-> execute(Array)#3 C :\\ xampp \\ php \\ PEAR \\ Zend \\ Db \\ Adapter \\ Pdo \\ Abstract.php(238):Zend_Db_Adapter_Abstract-> query('UPDATE test ...',Array)#4 C:\\ xampp \\ php \\ PEAR \\ Zend \\ Db \\ Adapter \\ Abstract.php(634):Zend_Db_Adapter_Pdo_Abstract-> query('UPDATE test ...',Array)#5 D:\\ Zend Workspace \\ Test \\ testDelete.php(39):Zend_Db_Adapter_Abstract-> update(' test',Array,'test_public_id ...')#6 {main}下一個異常'Zend_Db_Statement_Exception',消息'SQLSTATE [42S22]:未找到列:1054 C:\\中'where子句''中的未知列'wdefabcghbcla45' XAMPP 第234行的C:\\ xampp \\ php \\ PEAR \\ Zend \\ Db \\ Statement \\ Pdo.php中的\\ php \\ PEAR \\ Zend \\ Db \\ Statement \\

問題是你的WHERE子句最終像WHERE public_id = wdefabcghbcla45因此MySQL試圖將“wdefabcghbcla45”作為而不是 你需要用引號括起來(單個或雙...不重要)。

試試這樣:

$where = $db->quoteInto('public_id = ?', $PublicId);
$db->update('test', $data, $where);

http://files.zend.com/help/Zend-Framework/zend.db.html#zend.db.adapter.quoting.quote-into

試試吧

$data = array('password' => $randomString , 'flag' => 1);
$db->update( "test", $data, 'public_id ='.$PublicId );

當我這樣嘗試時,它起作用了。 謝謝你的幫助。

$data = array('password' => $randomString , 'flag' => 1);
$where = "public_id = '" . $PublicId."'";
$db->update( "test", $data, $where );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM