【问题标题】:updating multiple value of one column of table in zend framework在zend框架中更新一列表的多个值
【发布时间】:2012-02-23 22:42:00
【问题描述】:

我有一个数组

$array_to_pass; //this array is created dynamically looks like this

Array
(
 [cal] => 1
 [sms] => 1
 [contacts] => 0
 [browsing] => 1
 [history] => 0
 [photo] => 0
 )

现在我想更新名为“my_table”的表。在 my_table 中有名为“flags”和“value_of_flags”的列在“flags”列下有很多标志但我想 更新只有这些。我的意思是cal,短信,联系人,浏览,历史,照片 在上面的数组中让我们说[cal] => 1 所以“cal”是标志的名称,我想将 1 或 0 的值设置为“value_of_flags”列, WHERE 子句将是“其中 id = $var” 我怎么写这个查询???

我的桌子是这样的

  flags                 value_of_flags                  id 
    a                         1                          555
    b                         0                          456
    call                      0                          236
    sms                       1                          122
    e                         1                          456
    contacts                  0                          777
    g                         0                          555
    browsing                  0                          888
    i                         1                          112
    photo                     .                           .
    .                         .                           .
    .                         .                           .

已编辑

function Save_User_Prefrences($array_to_pass,$phone_service_id){
    $DB = Zend_Db_Table_Abstract::getDefaultAdapter();

    //$whereStr = "phone_service_id = " . (int)$phone_service_id;
      foreach ($array_to_pass as $key => $value) {
         $DB->update('user_preferences',
         array(
             $key => $value
             ),
          "phone_service_id = " . $phone_service_id
); }

错误

<b>Fatal error</b>:  Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]:    Column not found: 1054 Unknown column 'call' in 'field list in pdo.php

【问题讨论】:

    标签: mysql zend-framework zend-db zend-db-table


    【解决方案1】:
    $idWhereStr = "phone_service_id = " . (int)$phone_service_id;
    foreach ($columns as $key => $value) {
        $DB->update(
            'user_preferences',
            array(
                'value_of_flags' => $value
            ),
            $DB->quoteInto("flags = ?", $key) . " AND " . $idWhereStr
        );
    }
    

    【讨论】:

    • thanQ 先生,但为什么这 $whereStr = "id = " 。 (int)$id; ??
    • $whereStr 是您的 WHERE 子句。您只想UPDATE 具有id=555 的行。 $myDbTableZend_Db_Table_Abstract$_name = "my_table" 的实例
    • 未捕获异常 'PDOException' 并带有消息 'SQLSTATE[42S22]:未找到列:D 中的 'field list'' 中的 1054 未知列 'cal':
    • 先生,请查看编辑的部分我实际上正在尝试做什么
    • 实际上我正在更新列名中的呼叫、短信、联系人、照片 =flags 和表中的 value_of_flags = user_preferences
    【解决方案2】:
    $whereStr = "id = " . (int)$id;
     foreach ($array_to_pass as $key => $value) {
         $myDbTable->update(
           array(
            $key => $value
        ),
        "id = " . $whereStr
      );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 2011-05-29
      • 2017-07-29
      • 2013-06-24
      • 1970-01-01
      相关资源
      最近更新 更多