sql-server - 代码点火器中的更新不更新记录
问题描述
$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。表明
更新 "tblVisitorCounter" SET "lngCount" = 'lngCount + 1' WHERE "strYear" = '2018'
当我直接在 Microsoft SQL Server Management Studio 中使用它时,它会正确更新。
我的 CI 更新有什么问题?
解决方案
我在这里看到两个问题:
第一的:
$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->
.
第二:
代码的第一行
$data = array('lngCount' => 'lngCount + 1');
创建一个带有与其关联的字符串值的数组,该数组在消息中正确反映
更新 "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');
推荐阅读
- node.js - dart2js 生成的 Firebase 函数中的 http 请求期间出错:ReferenceError: XMLHttpRequest is not defined
- sql - 在 SQL 中交换值?
- sql - 在 CTE 中使用标量变量
- grpc - gRPC 客户端从 Kestrel 服务器上运行的 gRPC 接收 Http2StreamException
- java - Antlr 可以忽略某些关键字吗?
- python - 如何使用 python3 在文件夹中裁剪白色背景上的所有 TIFF 图像?
- bash - UPPER 在 bash 脚本中不起作用是否有原因?
- powershell - 为什么这个 powershell http 服务器代码不起作用
- angular - 为 Selenium 测试构建定位器时属性 xpath="1" 的意义是什么
- reactjs - 如何删除默认的 Storybook Canvas 样式?