обновление в коде воспламенитель не обновляет запись - PullRequest
0 голосов
/ 21 декабря 2018
$data = array('lngCount' => 'lngCount + 1');
$this->default->where('strYear', date("Y"));
$query = $this->default->update('tblVisitorCounter', $data);
echo $this->default->last_query();
print_r($query);die();

У меня выше в коде воспламенитель.Не обновляет запись в базе данных.Я использую mssql.Он показывает

UPDATE "tblVisitorCounter" SET "lngCount" = 'lngCount + 1' WHERE "strYear" = '2018'

Когда я использую его непосредственно в Microsoft SQLServer Management Studio правильно обновлена.

Что не так с моим обновлением CI?

Ответы [ 3 ]

0 голосов
/ 21 декабря 2018
ok you have to try this code.You can update your record.


$data = array('lngCount' => 'lngCount + 1'); // In this array the "key" **lngCount** must same as your database table **tblVisitorCounter** of columnname which you want to update
    $this->db->where('strYear', date("Y");
            if ($this->db->update('tblVisitorCounter', $data)) {
                return true;
            } else {
                return false;
            }
0 голосов
/ 21 декабря 2018

Здесь я вижу 2 вопроса:

первый:

$query = $this->default->update('tblVisitorCounter', $data);

Я полагаю, вы хотите использовать конфигурацию БД по умолчанию.

и иметь конфигурацию базы данных, такую ​​как:

$db['default'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => 'database_name'
        // etc.
);

Тогда вам нужно куда-нибудь загрузить свою БД, например, ваш контроллер с $this->load->database(); и вызвать базу данных с $this->db->

примечание: вы, очевидно, можете использовать $default['your_config_option']=array(), а затем вызывать базу данных, как и вы.Это просто мнение, но, как написано выше в руководстве по CI, некоторые новые пользователи могут запутаться при использовании $this->default->.

см. Конфигурация базы данных CI и подключениев вашу базу данных

секунда:

первая строка вашего кода

$data = array('lngCount' => 'lngCount + 1');

создает массив со значением string , связанным с ним, что правильно отражается в сообщении

UPDATE "tblVisitorCounter" SET "lngCount" = 'lngCount + 1' WHERE"strYear" = '2018'

, чтобы увеличить, вам нужно использовать $this->db->set(), чтобы увеличить значение поля и получить + 1 из строки, устанавливая третий параметр set() в false, что предотвратит экранирование данных, поэтому поле будет увеличено.см. обновление данных

, затем вы можете легко обновить свою базу данных, например:

$this->load->database();
$this->db->set('lngCount', 'lngCount+1', FALSE);
$this->db->where('strYear', date("Y");
$query = $this->db->update('tblVisitorCounter');
0 голосов
/ 21 декабря 2018

Вы можете попробовать это решение для своей проблемы:

$this->db->set('lngCount', 'lngCount+1', FALSE);
$this->db->where('strYear', date("Y");
$query = $this->db->update('tblVisitorCounter');

echo $this->db->last_query();
print_r($query);die();

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...