Обновление базы данных Codeigniter - PullRequest
0 голосов
/ 16 ноября 2011

Таблица выглядит так

enter image description here

и я хочу обновить 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 с другой записью

вот так

enter image description here

Наконец, я тестирую обновление с помощью обычного 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 ");
}

так что я думаю, что это проблема с базой данных

вот структура БД enter image description here

и ArchiveID и RecipientID являются индексом

enter image description here

Ответы [ 4 ]

0 голосов
/ 15 июня 2014

Я использую этот код для проверки состояния запроса на обновление.

$this->db->where($array);
$status = $this->db->update('log', $data);
if($status)
   echo 'Success';
else
    echo 'Fail';
0 голосов
/ 17 ноября 2011

Когда вы говорите «нет», вы имеете в виду «нет», вы не можете подключиться к MySQL или phpMyAdmin, или нет, запрос на test2 не возвращает никаких результатов?Если второе верно, вы можете сделать выбор * и проверить наличие полей?Я не могу помочь, но думаю, что что-то могло случиться с вашими данными.

0 голосов
/ 21 ноября 2011

Я пытаюсь экспортировать данные из базы данных и обрезать их, а затем импортировать данные обратно, это может помочь, проблема решена.

0 голосов
/ 16 ноября 2011

Код выглядит хорошо. Пожалуйста, убедитесь, что все ваши поля написаны правильно, и значения соответствуют ожиданиям.

Попробуйте использовать более подробный и удобный для отладки способ, подобный этому, он должен помочь вам определить проблему (возможно, $userID содержит пробел или что-то тривиальное в этом роде). Вызовите last_query () в конце, чтобы увидеть, действительно ли запрос тот, который вы хотели

//...
var_dump($archiveID);
var_dump($userID);
$this->db->where('ArchiveID',$archiveID);
$this->db->where('RecipientID',$userID);
$data = array('DecryptionDate' => $date);
$this->db->update('log', $data);

// call this to test the correct query; see if is what you intended
echo $this->db->last_query();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...