2012-02-23 3 views
0

У меня есть массивобновления кратного значения одного столбца таблицы в рамках ZEND

$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 есть столбец с именем «флагами» и " value_of_flags "в колонке„флаги“есть много флагов, но я хочу UPDATE только these.i среднего кала, смс, контакты, просмотр история, фото в приведенном выше массиве позволяет говорить [cal] => 1 так что„кал“является имя флага, и я хочу установить значение 1 или 0 в столбец «value_of_flags», WHERE CLAUSE ll be «где 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      .       . 
    .       .       . 
    .       .       . 

EDITED

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 

ответ

0
$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 
    ); 
} 
+0

thanQ очень сэр, но почему это $ whereStr = "id =". (INT) $ Id; ?? –

+0

сэр как исправить этот $ myDbTable ????? –

+1

'$ whereStr' - это ваше предложение WHERE. Вы хотите «ОБНОВИТЬ» только строку с «id = 555». '$ myDbTable' - это экземпляр' Zend_Db_Table_Abstract' с '$ _name =" my_table "' – bububaba

-1
$whereStr = "id = " . (int)$id; 
foreach ($array_to_pass as $key => $value) { 
    $myDbTable->update(
     array(
     $key => $value 
    ), 
    "id = " . $whereStr 
); 
}