Search code examples
mysqldatabasejoomla

How to write 'WHERE' clause condition with AND in joomla 1.7? I have no data save for update


Please suggest how to write the following UPDATE query with AND in joomla.

Code:

$query = JFactory::getDbo()->getQuery(true);
$db =& JFactory::getDBO();
$query->update('table1');
$query->set('id = ' . $db->quote($idname));
$query->set ('day='. $db->quote($this->_day));
$query->set('id2 = ' . $id2);

$query->where('id = '. (int)$idname)
        AND('id2=' .(int)$id2 );

The update is unsuccessful and the error is something like this:

//........[something before ]....

array(3) {
    [0]=>
    string(11) "id = '1'"
    [1]=>
    string(14) "id2='2'"
    [2]=>
    string(17) "date = 2012-04-02"    [it seems i got all the value pass to be update]
  }
  ["glue:protected"]=>
  string(4) "
, "
}
["where:protected"]=>
object(JDatabaseQueryElement)#251 (3) {
  ["name:protected"]=>
  string(5) "WHERE"
  ["elements:protected"]=>
  array(1) {
    [0]=>
    string(14) "id = 2"  [where clause is ok  ...BUT with AND...]
  }
  ["glue:protected"]=>   
  string(5) " AND "
}
["group:protected"]=>  [something is wrong here...?]
NULL
["having:protected"]=>
NULL
["columns:protected"]=>
NULL
["values:protected"]=>
NULL
["order:protected"]=>
NULL
["autoIncrementField:protected"]=>
NULL
}

Solution

  • I am not sure about Joomla update query but I think its something like this:-

    $query->where('id = '. (int)$idname);
    $query->AND('id2=' .(int)$id2 );
    

    or:-

    $query->where('id = '. (int)$idname . 'AND id2 = '.(int)$id2);