Таблица выглядит так
и я хочу обновить DecryptionDate, указав ArchiveID и RecipientID
это мой код
$this->load->database();
$date = date("Y-m-d H:i:s");
$data = array('DecryptionDate' => $date);
$array = array('ArchiveID'=>$archiveID.'','RecipientID'=>$userID.'');
$this->db->where($array);
$this->db->update('log', $data);
if ($this->db->affected_rows() > 0) {
echo "SUCCESS";
} else {
echo "FAIL";
}
моя проблема в том, что я могу обновить данные, только когда $archiveID
- 911, а $userID
- test01, но программе не удается обновить, когда $archiveID
- 911, а $userID
- test02
после добавления echo $this->db->last_query();
У меня есть
ОБНОВЛЕНИЕ log
SET DecryptionDate
= '2011-11-16 20:01:39' ГДЕ ArchiveID
= '911' И RecipientID
= 'test01'
когда ArchiveID - test01, а обновление - SUCCESS
и
ОБНОВЛЕНИЕ log
SET DecryptionDate
= '2011-11-16 20:03:10' ГДЕ ArchiveID
= '911' И RecipientID
= 'test02'
, когда ArchiveID имеет значение test02, а обновление - FAIL
Я попробовал это
$this->load->database();
$date = date("Y-m-d H:i:s");
$this->db->query('UPDATE log
SET DecryptionDate = \''.$date.'\'
WHERE ArchiveID = \''.$archiveID.'\' AND RecipientID = \''.$userID.'\'');
if ($this->db->affected_rows() > 0) {
echo "SUCCESS";
return TRUE;
} else {
echo "FAIL";
return FALSE;
}
но результат все тот же
и попробуйте проверить только RecipientID, как это
$this->load->database();
$date = date("Y-m-d H:i:s");
$this->db->query('UPDATE log
SET DecryptionDate = \''.$date.'\'
WHERE RecipientID = \''.$userID.'\'');
if ($this->db->affected_rows() > 0) {
echo "SUCCESS";
return TRUE;
} else {
echo "FAIL";
return FALSE;
}
выполнить обновление успешно только с записью, которая соответствует RecipientID
, но не с дубликатом ArchiveID
с другой записью
вот так
Наконец, я тестирую обновление с помощью обычного php-файла со следующим кодом, а не через CI, и в результате получается ошибка
$date = date("Y-m-d H:i:s");
$strSQL = "UPDATE log SET DecryptionDate = '".$date."' WHERE ArchiveID = '911' AND RecipientID = 'test02' ";
$objQuery = mysql_query($strSQL);
if( mysql_affected_rows($objQuery) != 0 )
{
echo (" SUCCESS ");
} else {
echo (" FAIL ");
}
так что я думаю, что это проблема с базой данных
вот структура БД
и ArchiveID и RecipientID являются индексом