PHP&MySQL小技巧记录
文章平均质量分 50
记录了学习和编码过程中的灵光一现,大家有兴趣可以共同学习。。。
luyaran
像永远快乐的阳光,追求那至高无上的完美乐园。
展开
-
MySQL面试常见题目(一)
1、MySQL使用过程中遇到过死锁问题吗?如何解决的?操作步骤如下: 通过【show engine innodb status;】指令查看死锁日志。 找出死锁SQL。 分析SQL加锁情况。 模拟死锁案发。 分析死锁日志。 分析死锁结果。 2、日常工作中是怎么优化SQL的?可从如下几个方面来聊: 加索引,提高查询速度。 避免返回不必要的数据,减少数据量。 适当分批量进行查询,减少单次查询压力。原创 2021-10-25 17:30:52 · 162 阅读 · 0 评论 -
VsCode配置PHP开发不能识别YAF框架语法
主要是【PHP Intelephense】这个插件导致的,有两个方法解决。第一个就是更改你现在使用的插件的版本。进入如下界面:安装1.2.3版本或之前的版本。第二个方案是更改最新版本插件的配置信息。进入如下界面:搜索Undefined Methods和Undefined Types这两个值,把它们对应的选项取消选择,重启编辑器就可以了。...原创 2021-08-11 14:33:03 · 584 阅读 · 5 评论 -
PHP+YAF处理CSS和JS的{}与smarty定界符冲突的问题
错误信息忘记截图了,大致错误信息如下:Unexpected ":", expected one of: "}"解决办法有两个,第一个是可以修改smarty 的定界符为 <{ }>格式,如下:$tpl->left_delimiter = '<{';$tpl->right_delimiter = '}>';第二个就是使用smarty模板引擎的literal处理机制,我们可以把JS代码包含在{literal}{/literal}之间,如下:{lit.原创 2021-08-10 17:33:21 · 251 阅读 · 1 评论 -
mysql的DDL语句、DML语句、DCL语句是什么鬼啊???
SQL 语句主要可以划分为以下 3 个类别:DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。 DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性...原创 2018-07-25 14:56:37 · 3314 阅读 · 0 评论 -
PHP小技巧之UNICODE编码转中文汉字
PHP的方式为:function decodeUnicode($str){ return preg_replace_callback('/\\\\u([0-9a-f]{4})/i', create_function( '$matches', 'return mb_convert_encoding(pack("H*", ...原创 2018-08-06 09:53:09 · 8379 阅读 · 0 评论 -
修改mysql和phpmyadmin访问的端口号
这段时间在搞公司的项目,所以一直没有更新文章。今天刚好有空,所以就记录一下开发过程中的问题和解决方案。事情是这样的,我嘞,需要搞个操作微博的程序放在虚拟机上,当然,最简单的方法就是安装一个集成环境,所以咱就安装了phpstudy这个东西。完事运行 一段时间之后,我同事说他在那个虚拟机上的项目运行出错了,原因就是它的数据库端口号被咱给占用了,所以嘞,改一下子呗。然后,我通过phpstudy直...原创 2018-08-24 15:30:21 · 18658 阅读 · 1 评论 -
PHP防止sql注入小技巧之sql预处理
我们可以把sql预处理看作是想要运行的 SQL 的一种编译过的模板,它可以使用变量参数进行定制。我们来看下它有什么好处: 预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)。 绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句。 预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。 这种预处理呢,可...原创 2018-08-29 09:58:01 · 3341 阅读 · 0 评论 -
PHP小技巧之使用ffmpeg截取出来视频的封面图
首先,咱们先来下载安装这个东西。在百度上搜索ffmpeg:点击上图的红色框框中的东西,完事进入如下界面:完事鼠标悬停在红色框框区域,之后出现如下界面:点击下面的红色框框,进入如下界面:选择适合自己的版本下载之后,解压。完事放到自己常用的硬盘中,我这边是D盘,如下: 完事进入bin目录中,如下:再来就是把这个路径,放到环境变量中,之后就可以使用了。...原创 2018-09-05 15:26:28 · 4531 阅读 · 1 评论 -
sql使用小技巧之SELECT DISTINCT的用法
SELECT DISTINCT 语句用于返回唯一不同的值,在表中,一个列可能会包含多个重复值,有时我们希望仅仅列出不同(distinct)的值,所以就应用到了,来看下它的语法:SELECT DISTINCT column_name,column_nameFROM table_name;来看一张表的数据:接下来,我们就来查出lid这一列的唯一值:好啦,本次记录就到这里了。...原创 2018-09-06 10:24:10 · 20105 阅读 · 0 评论 -
sql使用小技巧之通配符(like查询)的使用
通配符可用于替代字符串中的任何其他字符,在 SQL 中,通配符与 SQL LIKE 操作符一起使用,并且用于搜索表中的数据。在 SQL 中,可使用以下通配符:通配符 描述 % 替代 0 个或多个字符 _ 替代一个字符 [charlist] 字符列中的任何单一字符 [^charlist] 或 [!charlist] 不在字符列中的任何单一...原创 2018-09-06 10:42:26 · 12733 阅读 · 0 评论 -
sql使用小技巧之连接( JOIN,INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL OUTER JOIN)
先来看两个表的数据: 完事以上述两表为基础,我们来进行说明。SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段,最常见的 JOIN 类型就是SQL INNER JOIN(简单的 JOIN),它用于从多个表中返回满足 JOIN 条件的所有行。来看下我们可以使用的不同的 SQL JOIN 类型:INNER JOIN:如果表中有至少一个匹配,则返回行...原创 2018-09-06 11:51:14 · 799 阅读 · 0 评论 -
sql使用小技巧之使用UNION&UNION ALL操作符
SQL UNION 操作符合并两个或多个 SELECT 语句的结果,在这里我们要注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。下面来看下UNION和UNION ALL的语法:UNION :SELECT column_name(s) FROM table1UNIONSELECT c...原创 2018-09-06 13:24:16 · 3486 阅读 · 0 评论 -
sql使用小技巧之INSERT INTO SELECT 语句的使用心得了解下
INSERT INTO SELECT 语句的主要作用就是从一个表复制数据,然后把数据插入到一个已存在的表中,且目标表中任何已存在的行都不会受影响。它的语法有两种,如下:从一个表中复制所有的列插入到另一个已存在的表中:INSERT INTO table2SELECT * FROM table1;只复制希望的列插入到另一个已存在的表中:INSERT INTO table2(colum...原创 2018-09-06 13:34:44 · 9762 阅读 · 0 评论 -
sql使用小技巧之约束(Constraints、NOT NULL、UNIQUE、PRIMARY KEY)简单了解下
SQL 约束(Constraints)主要用于用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止。约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。来看下建表的语法:CREATE TABLE table_name( column_name1 data_type(size) constra...原创 2018-09-06 14:13:12 · 7072 阅读 · 0 评论 -
sql使用小技巧之约束(Constraints、FOREIGN KEY、CHECK、DEFAULT)简单了解下
一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键),我们来通过一个实例来解释外键,看一下下面的两个表:P_Id LastName FirstName Address City 1 Hansen Ola Timoteivn 10 Sandnes 2 Svendson Tove Bor...原创 2018-09-06 14:42:10 · 4521 阅读 · 0 评论 -
SQL的RDBMS是什么鬼(理解概念)?
RDBMS的全拼是Relational Database Management System,从字面上可以理解为关系数据库管理系统。它是SQL的基础,对于像MS SQL Server,IBM DB2,Oracle,MySQL和Microsoft Access等所有现代数据库系统。一个关系数据库管理系统(RDBMS)是一个数据库管理系统(DBMS),基于关系模型如通过 E. F. Codd 引入。...原创 2018-09-07 11:45:59 · 46463 阅读 · 1 评论 -
MySQL的第一(1NF)、二(2NF)、三(3NF)范式了解下
第一范式(1NF)设置了一个有组织的数据库非常基本的规则: 定义所需要的数据项,因为它们成为在表中的列。放在一个表中的相关的数据项。 确保有数据没有重复的组。 确保有一个主键。 我们可以这样理解,首先,必须定义的数据项,这就要求我们数据要被存储,组织数据到列,限定数据的每一列包含什么类型,最后把相关列到自己的表中。例如,把所有涉及会议地点列到地点表,那些有关会员在会员...原创 2018-09-07 13:15:08 · 2578 阅读 · 0 评论 -
sql使用技巧之笛卡尔连接或交叉连接了解下
笛卡尔连接或交叉连接从两个或多个连接表返回笛卡尔乘积的记录。因此,它相当于一个内部联接,其中联接条件始终计算为真或者联接条件是从语句中空缺。我们来看下语法:SELECT table1.column1, table2.column2...FROM table1, table2 [, table3 ]我们来看下面两个表: 根据笛卡尔连接的定义,我们可以先推算下,它会出现多少条...原创 2018-09-07 13:26:27 · 1136 阅读 · 0 评论 -
PHP常用的魔术常量记录下
PHP 向它运行的任何脚本提供了大量的预定义常量,不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。有八个魔术常量它们的值随着它们在代码中的位置改变而改变,我们接下来具体看下。首先是__LINE__,它表示文件中的当前行号,实例如下:<?phpecho '这是第 " ' . __LINE__ . ' " 行';...原创 2018-09-07 14:33:40 · 263 阅读 · 0 评论 -
PHP的命名空间(namespace)了解下不???
PHP 命名空间(namespace)是在PHP 5.3中加入的,它可以解决以下两类问题:用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。我们在默认情况下,所有常量、类和函数名都放在全局空间下,就和PHP支持命名空间之前一样,命名空间通过关键字names...原创 2018-09-07 16:08:58 · 380 阅读 · 0 评论 -
PHP的超级全局变量($GLOBALS&$_SERVER&$_REQUEST),咱们来聊聊
超级全局变量在PHP 4.1.0之后被启用, 是PHP系统中自带的变量,在一个脚本的全部作用域中都可用,超级全局变量具体如下:$GLOBALS $_SERVER $_REQUEST $_POST $_GET $_FILES $_ENV $_COOKIE $_SESSION 咱们这次就来聊聊$GLOBALS&$_SERVER&$_REQUEST这三个超级全局变量...原创 2018-09-11 09:28:17 · 1247 阅读 · 0 评论 -
mysql视图之优缺点了解下
数据库视图是虚拟表或逻辑表,它被定义为具有连接的SQL select查询语句。因为数据库视图与数据库表类似,它由行和列组成,因此可以根据数据库表查询数据。 大多数数据库管理系统(包括MySQL)允许您通过具有一些先决条件的数据库视图来更新基础表中的数据。又因为它与物理模式无关,所以数据库视图是动态的,当表的数据发生变化时,视图也反映了这些数据的变化。咱们来看下它的优点:数据库视图允许简化复杂查询:...原创 2018-07-12 10:02:41 · 11661 阅读 · 0 评论 -
mysql视图之创建视图(CREATE VIEW)和使用限制
mysql5.x 版本之后支持数据库视图,在mysql中,视图的几乎特征符合SQL:2003标准。 mysql以两种方式处理对视图的查询:第一种方式,MySQL会根据视图定义语句创建一个临时表,并在此临时表上执行传入查询。第二种方式,MySQL将传入查询与查询定义为一个查询并执行组合查询。mysql支持版本系统的视图,当每次视图被更改或替换时,视图的副本将在驻留在特定数据库文件夹的arc(arch...原创 2018-07-12 15:26:10 · 30866 阅读 · 3 评论 -
mysql视图之创建可更新视图
我们知道,在mysql中,视图不仅是可查询的,而且是可更新的。这意味着我们可以使用insert或update语句通过可更新视图插入或更新基表的行。 另外,我们还可以使用delete语句通过视图删除底层表的行。但是,要创建可更新视图,定义视图的select语句不能包含以下任何元素:聚合函数,如:min,max,sum,avg,count等。DISTINCT子句GROUP BY子句HAVING子句左连...原创 2018-07-12 16:13:36 · 10115 阅读 · 2 评论 -
mysql视图之确保视图的一致性(with check option)
我们有的时候,会创建一个视图来显示表的部分数据。我们知道,简单视图是的,因此可以更新通过视图不可见的数据,但是此更新会使的视图不一致。为了确保视图的一致性,在创建或修改视图时使用WITH CHECK OPTION可更新子句。我们来看下WITH CHECK OPTION可更新子句的语法结构:CREATE OR REPLACE VIEW view_name AS select_statement...原创 2018-07-12 16:41:23 · 2246 阅读 · 1 评论 -
mysql视图之检查选项子句(WITH CHECK OPTION子句中的local和cascaded)
当使用WITH CHECK OPTION子句创建视图时,MySQL会通过视图检查正在更改的每个行,例如插入,更新,删除,以使其符合视图的定义。因为mysql允许基于另一个视图创建视图,它还会检查依赖视图中的规则以保持一致性。为了确定检查的范围,mysql提供了两个选项:LOCAL和CASCADED。如果我们没有在WITH CHECK OPTION子句中显式指定关键字,则mysql默认使用CASCA...原创 2018-07-12 17:05:19 · 16984 阅读 · 3 评论 -
mysql视图之管理视图(增删改查)
mysql提供了用于显示视图定义的SHOW CREATE VIEW语句,我们来看下语法结构:SHOW CREATE VIEW [database_name].[view_ name];要显示视图的定义,需要在SHOW CREATE VIEW子句之后指定视图的名称,我们先来根据employees表创建一个简单的视图用来显示公司组织结构,完事在进行演示:CREATE VIEW organizatio...原创 2018-07-12 17:17:27 · 6000 阅读 · 0 评论 -
mysql触发器之优缺点简介
SQL触发器是存储在数据库目录中的一组SQL语句。每当与表相关联的事件发生时,即会执行或触发SQL触发器,例如插入,更新或删除。SQL触发器也可以当做是一种特殊类型的存储过程。 它是特别的,因为它不像直接像存储过程那样调用。 触发器和存储过程之间的主要区别在于,当对表执行数据修改事件时,会自动调用触发器,而存储过程必须要明确地调用。完事我们来看下SQL触发器的优点:SQL触发器提供了检查数据完整性...原创 2018-07-12 17:24:49 · 6411 阅读 · 0 评论 -
mysql触发器之创建简单触发器及限制
在MySQL中,触发器是一组SQL语句,当对相关联的表上的数据进行更改时,会自动调用该语句。 触发器可以被定义为在insert,update或delete语句更改数据之前或之后调用。在MySQL5.7.2版本之前,每个表最多可以定义六个触发器。我们来看下它们的简单介绍:BEFORE INSERT - 在数据插入表之前被激活触发器。AFTER INSERT - 在将数据插入表之后激活触发器。BEFO...原创 2018-07-13 10:40:32 · 4028 阅读 · 0 评论 -
mysql触发器之创建使用的小例子
我们可以可以使用CREATE TRIGGER语句创建一个新的触发器,来看下具体的语法:CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW BEGIN ... END;然后我们来详细看下上述sql的具体含义:将触发器名称放在CREATE TRIGGER语句之后。触发器名称应遵循...原创 2018-07-13 10:51:54 · 2361 阅读 · 0 评论 -
mysql触发器之创建多个触发器
这次记录的内容mysql 版本必须得是5.7.2+的哈,之前的会不好使的。废话不多说,咱们开始正文哈。在mysql 5.7.2+版本之前,我们只能为表中的事件创建一个触发器,例如,只能为BEFORE UPDATE或AFTER UPDATE事件创建一个触发器。 mysql 5.7.2+版本解决了这样限制,并允许我们为表中的相同事件和动作时间创建多个触发器。当事件发生时,触发器将依次激活。我们来参考创...原创 2018-07-13 13:30:41 · 8787 阅读 · 0 评论 -
mysql触发器之触发器的增删改查
我们在创建触发器后,可以在包含触发器定义文件的数据文件夹中显示其定义。触发器作为纯文本文件存储在以下数据库文件夹中:/data_folder/database_name/table_name.trg我们还可通过查询information_schema数据库中的triggers表来显示触发器,如下所示:SELECT *FROM information_schema.trigger...原创 2018-07-13 13:46:10 · 4313 阅读 · 0 评论 -
mysql的计划任务&事件调度程序了解下
mysql事件是基于预定义的时间表运行的任务,因此有时它被称为预定事件。mysql事件也被称为“时间触发”,因为它是由时间触发的,而不是像触发器一样更新表来触发的。mysql事件类似于UNIX中的cron作业或Windows中的任务调度程序。我们可以在优化数据库表,清理日志,归档数据或在非高峰时间生成复杂的报告的时候使用mysql事件。mysql使用一个名为事件调度线程的特殊线程来执行所有调度的事...原创 2018-07-13 14:27:10 · 536 阅读 · 0 评论 -
mysql事件之修改事件(ALTER EVENT)&禁用事件(DISABLE)&启用事件(ENABLE)&事件重命名&数据库事件迁移
我们要知道,MySQL允许我们更改现有事件的各种属性。如果我们要更改现有事件,可以使用ALTER EVENT语句,如下所示:ALTER EVENT event_nameON SCHEDULE scheduleON COMPLETION [NOT] PRESERVERENAME TO new_event_nameENABLE | DISABLEDO event_bodyALTER EV...原创 2018-07-13 14:36:50 · 9365 阅读 · 2 评论 -
mysql存储过程之循环(WHILE,REPEAT和LOOP)
MySQL提供循环语句,允许我们根据条件重复执行一个SQL代码块其中有三个循环语句:WHILE,REPEAT和LOOP,我们接下来分别看下。首先是WHILE语句来看下语法:WHILE expression DO statementsEND WHILEWHILE循环在每次迭代开始时检查表达式。 如果expressionevaluates为TRUE,MySQL将执行WHILE和END WHI...原创 2018-07-10 14:33:27 · 12567 阅读 · 0 评论 -
mysql存储过程之错误处理
当存储过程中发生错误时,重要的是适当处理它,例如:继续或退出当前代码块的执行,并发出有意义的错误消息。其中mysql提供了一种简单的方法来定义处理从一般条件(如警告或异常)到特定条件(例如特定错误代码)的处理程序。完事我们来使用DECLARE HANDLER语句来尝试声明一个处理程序,先来看语法:DECLARE action HANDLER FOR condition_value statemen...原创 2018-07-10 14:49:03 · 13868 阅读 · 1 评论 -
mysql存储过程之引发存储过程中的错误条件(SIGNAL和RESIGNAL语句)
在mysql中,我们可以使用SIGNAL和RESIGNAL语句来引发存储过程中的错误条件。先来看,SIGNAL语句。我们通常使用SIGNAL语句在存储的程序(例如存储过程,存储函数,触发器或事件)中向调用者返回错误或警告条件。 SIGNAL语句提供了对返回值(如值和消息SQLSTATE)的信息的控制。来看下它的语法结构:SIGNAL SQLSTATE | condition_name;SET c...原创 2018-07-10 14:58:24 · 3662 阅读 · 0 评论 -
mysql存储过程之存储函数(CREATE FUNCTION)
之前提到过好多次存储函数,这次咱们就来具体看下。它呢,是返回单个值的特殊类型的存储程序。我们通常使用存储的函数来封装在SQL语句或存储的程序中可重用的常用公式或业务规则。与存储过程不同,我们可以在SQL语句中使用存储的函数,也可以在表达式中使用, 这有助于提高程序代码的可读性和可维护性。我们来看下创建新存储函数的最简单语法:CREATE FUNCTION function_name(param1,...原创 2018-07-10 15:06:36 · 4116 阅读 · 0 评论 -
mysql存储过程之优缺点了解下
存储过程呢,其实就是存储在数据库目录中的一段声明性SQL语句,而,mysql在它发布的第一个十年期间,不支持存储过程,存储函数,触发器和事件。但是,自从MySQL 5.0版本以来,这些功能被添加到MySQL数据库引擎,使其更加灵活和强大。我们这次就来看下,这个存储过程的优缺点。首先来看优点:通常存储过程有助于提高应用程序的性能。当创建,存储过程被编译之后,就存储在数据库中。 但是,MySQ...原创 2018-07-09 10:53:54 · 827 阅读 · 0 评论 -
mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)
这个咱就不说什么定义啦术语啦啥的,直接看着实例来慢慢熟悉它。完事呢,咱们来创建一个名为GetAllProducts()的简单存储过程哈,这个GetAllProducts()存储过程呢,主要是用来从products表中选择所有产品。咱们来启动 mysql 客户端工具并键入以下命令:DELIMITER // CREATE PROCEDURE GetAllProducts() BEGIN...原创 2018-07-09 11:07:12 · 19052 阅读 · 1 评论