面包屑思维模型实战模型错题集结构手册流程手册自我检测专题模块
-
微信小程序前端微信小程序前端易错点收集查看
-
css/less/sass样式控制在开发过程中的一些样式控制bug规避查看
-
tp5开发小程序tp5开发小程序时错误积累查看
-
PHP错题集PHP在实际开发过程中遇到的问题查看
-
MySql数据库使用MySql在实际开发中遇到的错误总结查看
-
TP5错题集积累tp5框架在实际开发过程中遇到的问题查看
-
uni-app爬坑主要用于uni-app项目中遇到的一些问题查看
-
Vue.js易错收集vue.js项目常见错误收集整理查看
-
uni-app开发微信小程序uni-app开发微信小程序的一些爬坑积累查看
-
LinuxLinux在部署、开发、运维时遇见的错误积累查看
-
安全设计常见安全设计查看
-
Redis项目中使用redis的相关错误积累查看
-
前端特效前端特效相关错题集查看
最新博文
-
yii2和tp链式查询时where的区别
yii2tp中,链式查询可多个where同时使用,例如
$res=User::where('id','>','10')->where('isDel',0)->select();
yii2中,链式查询多个where同时使用时,从第二个where开始使用andWhere,例如
$res=User::find()->where('id','>','10')->andWhere('isDel',0)->all();
阅读更多风口下的猪2023-03-15【yii2】
-
yii2连接sqlsever的一些注意点 (windows解法)
yii2yii2连接sqlsever一般会出现以下问题:
(1)php没有装sqlsrv扩展;
(2)软件运行的操作系统,没有装ODBC Driver驱动;
(3)项目代码中配置连接sqlsever的dsn写法不对(不能照着官方的写)
一.php依据版本安装对应的sqlsrv扩展
(1)先新建一个可访问php文件,查看php详情及扩展
<?php echo phpinfo();?>如果PDO中没有sqlsrv就需要安装sqlsrv扩展
(2)下载php版本对应的sqlserv.exe,通过sqlserv.exe生成扩展文件
sqlserv.exe下载地址https://docs.microsoft.com/en-us/sql/connect/php/release-notes-php-sql-driver?view=sql-server-2017#previous-releases
如图,如果是php7.4的就下载5.8版本
点击执行下载的sqlsrv.exe生成扩展到选择的文件夹
(3)将生成的扩展php_pdo_sqlsrv_XX_nts_x64.dll和php_sqlsrv_XX_nts_x64.dll拷贝到php/ext目录下
(4)在php.ini中加入动态库并开启扩展配置
extension=php_pdo_sqlsrv_73_nts_x64.dll
extension=php_sqlsrv_73_nts_x64.dll
二.安装ODBC驱动
ODBC Driver 11 For SQL (msodbcsql.msi),注意是64还是86位
驱动下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=36434
点击安装即可。
二.项目代码中配置db连接,common/config/main-local.php中db的dsn写法调整
如果执行
报错:Error:SQLSTATE[IMSSP]: An invalid keyword 'host' was specified in the DSN string
多半是dsn写法错误
我之前的以下写法直接报host字段错误
sqlsrv:host=localhost;dbname=mydatabase
正确的规范写法如下:
- MySQL, MariaDB:
mysql:host=localhost;dbname=mydatabase
- SQLite:
sqlite:/path/to/database/file
- PostgreSQL:
pgsql:host=localhost;port=5432;dbname=mydatabase
- CUBRID:
cubrid:dbname=demodb;host=localhost;port=33000
- MS SQL Server (via sqlsrv driver):
sqlsrv:Server=localhost;Database=mydatabase
- MS SQL Server (via dblib driver):
dblib:host=localhost;dbname=mydatabase
- MS SQL Server (via mssql driver):
mssql:host=localhost;dbname=mydatabase
- Oracle:
oci:dbname=//localhost:1521/mydatabase
eg:
'db_gbq' => ['class' => 'yii\db\Connection','dsn' => 'sqlsrv:server=13.4534.635.12,1433;database=测试','username' => 'ddddds','password' => 'ttttter','charset' => 'utf8'],
阅读更多风口下的猪2023-03-15【yii2】
- MySQL, MariaDB:
-
yii2实现多个不同数据库连接
yii2yii2的多数据库连接,主要是两个部分main-local连接配置和模型申明哪个数据库连接
1.在common/config/main-local中设置多个db
return ['components' => [//线上'db' => ['class' => 'yii\db\Connection','dsn' => 'mysql:host=rm-wz9d7t51392x5543n7o.mysql.rds.aliyuncs.com;dbname=equity','username' => 'equity','password' => 'lI4oZ8mO0w','charset' => 'utf8','tablePrefix' => 'jdc_'],//贵扁鹊业绩数据源'db_gbq' => ['class' => 'yii\db\Connection','dsn' => 'sqlsrv:server=47.109.42.163,1433;database=测试','username' => 'gzh','password' => 'ASDqwe123','charset' => 'utf8'],不同的数据库连接写法遵循以下
MySQL, MariaDB: mysql:host=localhost;dbname=mydatabase
SQLite: sqlite:/path/to/database/file
PostgreSQL: pgsql:host=localhost;port=5432;dbname=mydatabase
CUBRID: cubrid:dbname=demodb;host=localhost;port=33000
MS SQL Server (via sqlsrv driver): sqlsrv:Server=localhost;Database=mydatabase
MS SQL Server (via dblib driver): dblib:host=localhost;dbname=mydatabase
MS SQL Server (via mssql driver): mssql:host=localhost;dbname=mydatabase
Oracle: oci:dbname=//localhost:1521/mydatabase2.在要使用的模型中使用getDb()申明连接的数据库
public static function getDb(){return Yii::$app->get('db_gbq');}
阅读更多风口下的猪2023-03-15【yii2】
-
DBeaver连接数据库
软件开发开发过程中,如果想看数据库的结构和数据,可以不用将sql导出来,可以通过远程连接查看。DBeaver就是这样的一个工具
DBeaver支持mysql、sqlsever等多个类型数据库
阅读更多风口下的猪2023-03-15【软件开发】
-
GithubDesktop的提交变更内容到分支
软件开发GithubDesktop提交一个版本到代码仓管,需要经历以下几个步骤:
(1)将代码整体clone到本地(可以理解为建立联系)
即存储库-->添加-->克隆存储库,在tab选项中选择URL,填上gitHub的地址和本地接收代码的文件夹地址,确定克隆到本地。
(2)在克隆项目代码中,替换变动的代码内容,让GithubDesktop识别出来
需要注意的是项目文件夹中的gitignore文件,该文件申明了哪些文件变动,不会被GithubDesktop识别。这样有效的保护了一些配置文件不被随意修改
(3)建立分支,提交到分支
分支的命名最好规范,即 提交人-功能模块-时间 三段式
阅读更多风口下的猪2023-03-15【软件开发】
-
yii2模型删除数据
yii2方法一
//删除数据
$user = User::find()->where(['id' => 1])->one();// 获取id为1的数据
$user->delete();//删除数据方法二
$uer = User::find()->where(['id' => 2])->all();// 获取id为2的数据
$data = $user[0]->delete();//删除数据方法三
$user = User::deleteAll('id=2');//删除id为2的数据
方法四
//多个条件删除
$data = User::deleteAll('id>:id AND num<:num', [':id' => 2,':num' => 100]);方法五
//删除所有数据
$user = User::deleteAll();
阅读更多风口下的猪2023-03-14【yii2】
-
yii2模型修改数据
yii2方法一
$user = $User::findOne($id);
$user->name = 'Peak2';
$data = $user->update();// 修改
$data = $user->save();// 修改方法二
// 将值进行 累加 或者 累减
// $count = 1, 就是加一
// $count = -1, 就是减一
$data = Uesr::updateAllCounters(['sort' => $count], ['id' => $id]);// 参数1为要修改的字段,参数2为修改条件
// 参数都是固定值方法三
// 参数都是固定值
Uesr::updateAll(['status' => 1],['status' => 0,'flag' => 1]);
// 参数有范围值
Uesr::updateAll(['status' => 1],['and', ['status' => 0],['<>', 'flag', 1]]);
阅读更多风口下的猪2023-03-14【yii2】
-
yii2模型增加数据
yii2yii2中模型增加数据,需要经历new模型、模型属性赋值、数据保存三个步骤
1.new一个模型
$user = new User();
2.模型属性赋值
方式一
$user->name = 'Peak';
$user->age = '18';方式二
$data = [
'name' => 'Peak',
'age' => 18
];
$user->attributes = $data;方式三
$data = [
'name' => 'Peak',
'age' => 18
];
$user->setAttributes($data);方式四
$data = [
'name' => 'Peak',
'age' => 18
];
$user->load($data, '');
if ($user->validate()) {// 数据校验
$user->save();
}3.数据保存
$user->save();// 添加数据
$user->insert();// 添加数据
$id = $user->attributes['id'];// 获取当前添加数据后的自增idTip
对load()方法解读:
通过查看load()方法可知,load()方法有两个参数,第一个参数 $data 是要填充的数据,第二个参数 $formName 是选择指定的模型
如果第二个参数不传,$formName 会默认为null,会默认取当前模型$this->formName()
如果指定了模型,会将模型名称作为key值,通过 $data[$formName] 取值,也就是这时候应该传的 $data 格式是:
$data = [
'User' => [
'name' => 'Peak',
'age' => 18
]
];如果 $formName 传空字符串,则 $data 传递参数格式为:
$data = [
'name' => 'Peak',
'age' => 18
];
阅读更多风口下的猪2023-03-14【yii2】
-
PHP – 如何使用 bcsub() 函数从另一个中减去一个任意精度数?
PHP在 PHP 中,bcsub()数学函数用于从另一个数字中减去一个任意精度的数字。该bcsub()函数将两个任意精度的数字作为字符串,并在将结果缩放到确定的精度后给出两个数字的减法。
语法
string bcsub ($num_str1, $num_str2, $scaleVal)
参数
该bcsub()数学函数接受三个不同的参数$num_str1,$num_str2 和 $scaleVal。
$num_str1 -它代表左操作数,它是字符串类型参数。
$num_str2 -它代表正确的操作数,它是字符串类型参数。
$scaleVal -它是可选的整数类型参数,用于设置结果输出中小数点后的位数。它默认返回零值。
返回值
该bcadd()数学函数返回两数相减$num_str1 和 num_str2,作为一个字符串。
示例 1 -bcsub()不使用 $scaleVal 参数的 PHP 函数
<?php
// 说明 bcadd() 函数的 PHP 程序
// 使用任意精度的两个输入数字
$num_string1 = "10.555";
$num_string2 = "3";
// 计算添加
// 两个没有 $scaleVal 参数的数字
$result = bcsub($num_string1, $num_string2);
echo "没有 scaleVal 的输出是: ", $result;
?>输出结果
没有 scaleVal 的输出是: 7
如果没有$scaleVal参数,该bcsub()函数会丢弃输出中的小数点。
示例 2 -bcsub()使用 $scaleVal 参数的 PHP 函数
在这种情况下,我们将使用scaleVal为 3的相同输入值。因此,输出值将显示小数点后 3 位数字。
<?php
// 说明 bcsub() 函数的 PHP 程序
// 使用任意精度的两个输入数字
$num_string1 = "10.5552";
$num_string2 = "3";
//使用比例值 3
$scaleVal = 3;
// 计算添加
// 两个没有 $scaleVal 参数的数字
$result = bcsub($num_string1, $num_string2, $scaleVal);
echo "scaleVal 的输出是: ", $result;
?>输出结果
scaleVal 的输出是: 7.555
阅读更多风口下的猪2023-03-14【PHP】
-
理解yii2模型中findOne()、findAll()
yii2Yii的查询搜索函数find findAll findOne:find就是返回结果 findone就是返回一条数据 findall就是返回所有数据
1.findOne()
$b = A::findOne(['id'=>$a]);
相当于$b = A::find()->Where ( [ ' id ' => " $a " ] )->one();
2.findAll()
$buildingObject = Building::findAll(['id'=>[18,19],'status'=>1]);
相当于$buildingObject = Building::find()->where(['id'=>[18,19]])->andWhere(['status'=>1])->all();
查询
通过 yii\db\ActiveRecord::find() 方法创建一个新的查询生成器对象;
多少个:与find结合使用
all():将返回一个由行组成的数组,每一行是一个由名称和值构成的关联数组(译者注:省略键的数组称为索引数组)。
one():返回结果集的第一行。
column():返回结果集的第一列。
scalar():返回结果集的第一行第一列的标量值。
exists():返回一个表示该查询是否包结果集的值。
count():返回 COUNT 查询的结果。
组合查询
yii\db\ActiveRecord::findOne():返回一个 Active Record 实例,填充于查询结果的第一行数据。
yii\db\ActiveRecord::findAll():返回一个 Active Record 实例的数据,填充于查询结果的全部数据。
阅读更多风口下的猪2023-03-14【yii2】
-
yii2模型中块赋值$model -> attributes = $data;
yii2其表现形式是$model -> attributes = $data
特点:适用于模型数据大量操作时刻减少代码量,简洁美观,便于后期优化
例如:
数据表字段:id,name,passwd,gender,create_at,update_at
$data = [
'name'=>'jack',
'passwd'=>123456,
'gender'=>'男',
'created_at'=>12345678,
'updated_at'=>123456
];
$model = new User();
//块赋值
$model -> attributes = $data;
//特定字段重新赋值
$model -> passwd = md5($data['passwd']);
$model -> gender = $data['gender'] == '男'? 1 : 0;
print_r($model->toArray());结果:
array = [
'name' => 'jack',
'passwd' => 'wtyuirt3456789fghjjsdfg' //md5后的结果,
'gender' => 1, //处理后的结果
'created_at' => 12345678,
'updated_at' => 123456
];
阅读更多风口下的猪2023-03-14【yii2】