
批量更新记录2种方案分析

徐多蔚APP开发,合肥物联网项目开发,合肥网络开发,合肥项目高端定制,企业oa开发,合肥小程序开发,合肥公众号开发,合肥网络安防 – 徐多蔚 xuduowei
联系方式[微信]:徐多蔚15309695130 感恩有您的陪伴,我们用心服务每一位客户 – 徐多蔚 xuduowei
时间函数。
sql:
unix_timestamp($strdate); //把我们的字符串时间-》时间戳格式。
若 $strdate为空!则返回的是当前的时间戳!
FROM_UNIXTIME($intdate);//把我们的时间戳-》字符串。
在sql中如何获得当前的年月日,时分秒?
FROM_UNIXTIME(unix_timestamp());
update users set addtime=FROM_UNIXTIME(unix_timestamp()) where username=’jacky’ and password=’abc123′
<?php
$i="upfiles";//$i是要显示的目录,*表示当前目录下所有目录和所有文件
while($file=glob($i)){
foreach($file as $s){
//$t=is_dir($s) ? "[文件夹] $s<br />" : "[文件] $s<br />";
if(!is_dir($s)){
echo $s."<br/>";
}
}
$i.="/*";
}
?>
$dir=opendir("目录");
readdir( $dir );
closedir( $dir );
function showlist($folderdir){
$dirname=$folderdir;
$dir = opendir( $dirname );
while( $file = readdir( $dir ) ){
if($file!="."&&$file!=".."&&is_dir($dirname."/".$file)){
showlist($dirname."/".$file);
}
else if($file!="."&&$file!="..") {
echo $file."<br/>";
}
}
closedir( $dir );
}
showlist("upfiles");
刚刚尝试使用同步文件法把整个mysql的数据文件传送到另外一台服务器做双机备份。
转移完成后通过命令行形式用root账户连接上mysql查看了一下,所有数据完好,用户数据也转移过来了。
但是当我把网站数据也导入该服务器之后,所有需要访问mysql数据库的网站全部出现了无法连接的错误,症状就如同密码错误一样。
使用phpmyadmin进入mysql查看,在权限页面也可以正常看到所有的mysql账户,在mysql.user表中所有的数据也很正常。
然后我尝试了一下修改导入的账户的密码,使用了
的方法,收到了以下错误提示
Error (1133): Can’t find any matching row in the user table
经过在网上各种查询之后,找到的最简单的办法就是在mysql命令行中执行set FLUSH
这一语句即可。
PRIVILEGES;
发生这一错误的原因是在变更了mysql.user表之后,没有使用FLUSH PRIVILEGES命令来更新权限表(grant tables)
进入mysql:
mysql -uroot -p
输入密码。
选择mysql数据库:
use mysql;
增加允许远程访问的用户或者允许现有用户的远程访问。
给root授予在任意主机(%)访问任意数据库的所有权限。
update user set host='%' where user='root' and host='localhost';
退出mysql:
exit
重启数据库:
[root@localhost ~]# service mysqld restart
1秒(second) = 1000毫秒(millisecond) = 1000,000微秒(microsecond)
PHP函数microtime()返回当前 Unix 时间戳和微秒数。
默认返回字符串 "microsec sec" ,其中 sec 为自 Unix 纪元(0:00:00 January 1, 1970 GMT)起的秒数,microsec 为微秒部分。
microtime(get_as_float);如果 get_as_float 参数设置为 TRUE,则返回浮点数,表示自 Unix 纪元起精确到微秒的以秒为单位的当前时间。
徐多蔚 xuduowei 徐老师 合肥php老师
//REGEXP 是sql中的正则。
select * from infos where tuijian REGEXP ‘[1]’;
SELECT * FROM infos WHERE CONCAT(“,”,tuijian,”,”) REGEXP “,[13],”;//检索1或者3的
SELECT * FROM infos WHERE CONCAT(“,”,tuijian,”,”) REGEXP “,(13),”;//检索13的。
//检索,1,3或者13的。
SELECT * FROM infos WHERE CONCAT(“,”,tuijian,”,”) REGEXP “,[13],” or CONCAT(“,”,tuijian,”,”) REGEXP “,(13),”
SELECT * FROM infos WHERE CONCAT(“,”,tuijian,”,”) REGEXP “,(13)|[13],”
写法一:
{foreach $xdw as $k=>$v}
{$k}
{/foreach}
写法二:
{foreach name="list" item="vo" key="k" }
{$k}|{$vo}
{/foreach}
tp5\application\common.php
public function abc(){
//echo 666;
//echo $_GET['aaa'];
$arr=$this->request->param();
var_dump($arr);
}
没有I方法了,我们用input实现。
input('get.id'); // I('get.id');
input('post.name'); // I('post.name');
提示:tp5中的input(“get.”)只能获得表单提交过来的数据,不能得到url get传值哦。
config(‘database.prefix’)insertGetId方法新增数据并返回主键值使用getLastInsID方法:
Db::name(‘user’)->insert($data);
$userId = Db::name(‘user’)->getLastInsID();
// 使用insertGetId方法
Db::name(‘user’)->insertGetId($data);
$a=config("database.prefix")."administrators";
$b=config("database.prefix")."administrators_groups";
//https://www.kancloud.cn/manual/thinkphp5/118083
$arr=$this->db->table($a)->alias('a')->join("$b b",'a.gid = b.id','left')->where($tj)->paginate(config('admin888.pagesizenum'),false, [
'query' => Request::instance()->param(),//不丢失已存在的url参数
]);
另外,我们也可以灵活使用扩展类的方式实现。
1、在根目录 extend 中创建 Mess.php类文件;
code:
<?php
class Mess{
function xdw(){
echo "xuduowei";
}
}
?>
2、在对应的引用的控制器中
use Mess;
$Mess=new Mess();
$Mess->xdw();
tp5中:
1、模型的载入;
方法一:直接在控制器中实例化:
$obj=new \app\admin\model\Index2; //提示第一个\是不能省略的。否则报错!
echo $obj->index();
方法二:use 导入,后实例化。
use \app\admin\model\Index2;
控制方法中:
$obj=new Index2;
echo $obj->index();
一、增加后台模块入口文件public/boss.php
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
define('BIND_MODULE','admin');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
二、修改配置文件禁用后台模块访问application/config.php
// 禁止访问模块
'deny_module_list' => ['common','admin'],
$User->where('id=5')->setInc('score',3); // 用户的积分加3
$User->where('id=5')->setInc('score'); // 用户的积分加1
$User->where('id=5')->setDec('score',5); // 用户的积分减5
$User->where('id=5')->setDec('score'); // 用户的积分减1
mysql数据库备份-主从分离
原理:主从分离 【一般都是在同一机房中进行】
实现步骤:
1、确保主服务器打开二进制日志功能;
这样,主服务器一旦有数据变化,立即产生二进制日志;
2、从服务器也需要开启二进制日志和relay日志功能。
这样可以从主服务器读取binlog并产生relaylog
3、在主服务器建立一个从服务器账号,并授予读binlog的权限。
4、指定从服务对应的主服务器,开启从服务器。
主:
binlog-format=row/statement
statement:2进制记录执行语句,如update
row: 2进制记录的是磁盘变化;
mixed: 混合的,由系统根据语句,来决定。
update table set aa=xx where id=3 ;//语句长而磁盘变化少,建议row
update table set aa=xx;//语句短,但是影响上万行,磁盘变化大,易用
statement。
若想让系统自动帮我们识别,则建议用mixed,混合的,由系统根据语句来决定。
主服务器
mysql配置文件如下;
#给服务器起一个独特的id
server-id=201
#声明2进制日志的文件为mysql-bin.xxxx
log-bin=mysql-bin
#二进制日志的格式 mixed/row/statement
binlog-format=mixed
查看是否能充当主服务器:
show master status;
=========================================
从服务器mysql配置如下:
#给服务器起一个独特的id
server-id=202
#声明2进制日志的文件为mysql-bin.xxxx
log-bin=mysql-bin
#建议从服务器开启二进制日志,因为从服务器主要就是起到备份的功能。
#二进制可以看成最后的数据恢复方案。
#二进制日志的格式
relay-log=mysql-relay
查看是否能充当从服务器:
show slave status;
主服务器操作::
mysql>use mysql;
mysql>select host,user,password from user;
核心操作:
第一步:
mysql>use mysql;
第二步:
mysql>grant replication client,replication slave on *.* to
repl@’192.168.1.%’ identified by ‘repl’;
第三步:
mysql>flush privileges;
从服务器操作::
核心操作:
第一步:
mysql>use mysql;
第二步:
mysql>
change master to
master_host=’192.168.1.107′,
master_user=’repl’,
master_password=’repl’,
master_log_file=’mysql-bin.000001′,
master_log_pos=107;
第三步:
我们执行后看可打通呢?
mysql>show slave status;
第四步 启动从服务器功能:
mysql>start slave;
怎么开启?
MySQL\my.ini
中,在mysqld结构中加入:log_bin=mysqlxdw
提示:mysqlxdw是文件名,可自己任意定义。
[mysqld]
port=3306
basedir=”E:/phpStudy/MySQL/”
datadir=”E:/phpStudy/MySQL/data/”
character-set-server=utf8
default-storage-engine=MyISAM
log_bin=mysqlxdw
是否启用了日志
mysql>show variables like 'log_bin';
怎样知道当前的日志
mysql> show master status;
mysql> show binlog events;
SHOW BINLOG EVENTS IN ‘mysqlxdw.000002’;
项目调试,二进制查看
show binlog events;#显示二进制日志
PURGE MASTER LOGS TO 'mysqlxdw.000001'; #清除主日志
flush logs;#刷新日志
reset master;#复位主日志
show binlog events;
PURGE MASTER LOGS TO 'mysqlxdw.000001';
flush logs;
reset master;