2016-03-05 47 views
0

我想運行一個刪除sql查詢,其中包含多個值。但我無法這樣做。所以需要你的幫助。如何運行具有多個值的刪除sql查詢

在Controller.php這樣頁:

function deleteFiles() 
{ 
$mainframe = &JFactory::getApplication(); 
if ($this->_model->deleteFiles()) { 
$mainframe->enqueueMessage('Files deleted successfully'); 
} else { 
$mainframe->enqueueMessage('Files not deleted'); 
} 
    ARequest::redirectList($this->_controllerName); 
} 

在model.php頁:

function deleteFiles($field, $value) 
{ 
$query = 'DELETE FROM ' . $this->rquote($this->_table->getTableName()) . ' WHERE ' . $this->rquote($field) . ' = ' . $this->_db->Quote($value); 
$this->_db->setQuery($query); 
return $this->_db->query(); 
} 

在file.php頁面現在

function deleteFiles() 
{ 
$this->_db->setQuery('DELETE r 
      FROM #__booking_reservation AS r 
      WHERE r.state = ' . FILES_ACCEPT); 
$this->_db->query(); 
return true; 
} 

在file.php頁,我想要將FILES_BOOKED,FILES_CANCEL,FILES_DELETE和當前的FILES_ACCEPT一起添加。但我不知道該怎麼做。

你能幫我一把嗎?

回答

0

你可以簡單地在你的SQL查詢定義它WHERE下將分別與OR

DELETE r 
FROM #__booking_reservation AS r 
WHERE r.state = .. OR r.state = .. OR ... 

更新

$this->_db->setQuery('DELETE r 
     FROM #__booking_reservation AS r 
     WHERE r.state=' .FILES_ACCEPT. ' OR r.state=' .FILES_BOOKED); 
+0

我要把單引號和第一括號放在哪裏? $ this - > _ db-> setQuery('DELETE r FROM #__booking_reservation AS r WHERE r.state ='。FILES_ACCEPT OR r.state = FILES_DELETE); – indy

+0

好吧我更新了mu回答php例子 – Armen

+0

yahh,它工作。謝謝阿門。 – indy

0

這是你想要的嗎?

. . . 
WHERE r.state IN (' . FILES_ACCEPT . ', ' . FILES_BOOKED . ', ' FILES_CANCEL . ', ' . FILES_DELETE . ')'); 

這裏假定全部大寫的名稱包含有效值state