mysql函数

mysql防注入攻击解决办法

半世苍凉 提交于 2019-12-24 00:48:28
magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误。在magic_quotes_gpc=On的情况下,如果输入的数据有单引号(’)、双引号(”)、反斜线()与 NUL(NULL 字符)等字符都会被加上反斜线。这些转义是必须的,如果这个选项为off,那么我们就必须调用addslashes这个函数来为字符串增加转义。 stripslashes() 函数删除由 addslashes() 函数添加的反斜杠。 mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。 下列字符受影响: \x00 \n \r \ ' " \x1a 如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。 防止注入攻击: <?php function check_input($value) { // 去除斜杠 if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // 如果不是数字则加引号 if (!is_numeric($value)) { $value = "'" . mysql_real_escape

慢sql优化经验

吃可爱长大的小学妹 提交于 2019-12-23 23:52:18
mysql 项目 SELECT识别符。这是SELECT的查询序列号 select_type SELECT类型,可以为以下任何一种 : 1. SIMPLE:简单SELECT(不使用UNION或子查询) 2.PRIMARY:最外面的SELECT 3.UNION:UNION中的第二个或后面的SELECT语句 4.DEPENDENT UNION:UNION中的第二个或后面的SELECT语句,取决于外面的查询 5.UNION RESULT:UNION 的结果 6.SUBQUERY:子查询中的第一个SELECT 7.DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询 8.DERIVED:导出表的SELECT(FROM子句的子查询) table 输出的行所引用的表 type 联接类型。下面给出各种联接类型,按照从最佳类型到最坏类型进行排序: 1、 system:表仅有一行(=系统表)。这是const联接类型的一个特例。 2、 const:表最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行的列值可被优化器剩余部分认为是常数。const表很快,因为它们只读取一次! 3、 eq_ref:对于每个来自于前面的表的行组合,从该表中读取一行。这可能是最好的联接类型,除了const类型。 4、 ref:对于每个来自于前面的表的行组合

PHP配置文件详解php.ini

这一生的挚爱 提交于 2019-12-23 21:15:35
[PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;;;;;;;;;;;;;;;; ; 关于这个文件 ; ;;;;;;;;;;;;;;;;;;; ; 这个文件控制了PHP许多方面的观点。为了让PHP读取这个文件,它必须被命名为 ; 'php.ini'。PHP 将在这些地方依次查找该文件:当前工作目录;环境变量PHPRC ; 指明的路径;编译时指定的路径。 ; 在windows下,编译时的路径是Windows安装目录。 ; 在命令行模式下,php.ini的查找路径可以用 -c 参数替代。 ; 该文件的语法非常简单。空白字符和用分号';'开始的行被简单地忽略(就象你可能 ; 猜到的一样)。 章节标题(例如 : [Foo])也被简单地忽略,即使将来它们可能 ; 有某种的意义。 ; ; 指示被指定使用如下语法: ; 指示标识符 = 值 ; directive = value ; 指示标识符 是 *大小写敏感的* - foo=bar 不同于 FOO = bar。 ; ; 值可以是一个字符串,一个数字,一个 PHP 常量 (如: E_ALL or M_PI), INI 常量中的 ; 一个 (On, Off, True, False, Yes, No and

MySQL版本升级之5.6到5.7

℡╲_俬逩灬. 提交于 2019-12-23 16:30:38
两种升级方式 In-Place Upgrade : Involves shutting down the old MySQL version, replacing the old MySQL binaries or packages with the new ones, restarting MySQL on the existing data directory, and running mysql_upgrade . Logical Upgrade : Involves exporting existing data from the old MySQL version using mysqldump , installing the new MySQL version, loading the dump file into the new MySQL version, and running mysql_upgrade . 主从的升级: 主从想都替换二进制安装包为最新版本 停从,通过mysql_upgrade升级后,加参数 --skip-slaves-start 进行启动   加参数 --skip-networking重启主,拒绝来自应用的TCP/IP的连接,关闭binlog,执行mysql_upgrade,然后重启 注意点:在关闭服务时加参数 --innodb_fast

PHP配置文件详解

℡╲_俬逩灬. 提交于 2019-12-23 15:55:21
PHP 是一个简单易学,功能强大的语言,尤其在Web开发,开发效率高,方便快捷。研究一下php.ini了解PHP相关配置会有好处的,对PHP有更加深入的了解。 [PHP ] ;;;;;;;;;;;;;;;;;;; ; 关于这个文件 ; ;;;;;;;;;;;;;;;;;;; ; 这个文件控制了PHP许多方面的观点。为了让PHP读取这个文件,它必须被命名为 ; 'php.ini'。PHP 将在这些地方依次查找该文件:当前工作目录;环境变量PHPRC ; 指明的路径;编译时指定的路径。 ; 在windows下,编译时的路径是Windows安装目录。 ; 在命令行模式下,php .ini的查找路径可以用 -c 参数替代。 ; 该文件的语法非常简单。空白字符和用分号 ';'开始的行被简单地忽略(就象你可能 ; 猜到的一样)。 章节标题(例如 : [Foo ])也被简单地忽略,即使将来它们可能 ; 有某种的意义。 ; ; 指示被指定使用如下语法: ; 指示标识符 = 值 ; directive = value ; 指示标识符 是 *大小写敏感的 * - foo =bar 不同于 FOO = bar。 ; ; 值可以是一个字符串,一个数字,一个 PHP 常量 (如: E_ALL or M_PI ) , INI 常量中的 ; 一个 (On , Off , True , False , Yes ,

mysql数据的基本查询

a 夏天 提交于 2019-12-23 11:53:54
学习环境:共三张表,分别是TScore分数表 ,TStudent学生表 ,TSubject科目表。字段如图: ****以上数据信息全为函数自动生成,身份证及名称并非真实**** 使用select语句查询数据 4.1.1指定列 查询所有行 SELECT * FROM TStudent 使用where子句指定行 请查询:名字叫'吕宁言'的学生的姓名、性别、身份证号、邮箱? SELECT Sname,sex,cardID,Birthday,Email FROM TStudent WHERE Sname='吕宁言' 4.1.2过滤数据 使用比较操作符 = > < >= <= <> 请查询:查询分数小于60的学生ID? select * from TScore select * from TScore where mark<=60 4.1.3 使用逻辑操作符 AND和OR的使用 SELECT * FROM TStudent WHERE Sname='曹园贞' AND Class='测试' AND sex='女' SELECT * FROM TStudent WHERE Sname='曹园贞' OR Sname='邓咏桂' like的使用: 查询以‘高’姓学生的信息? select * from TStudent where sname like '高%' select * from

MySQL 5.7新特性介绍

∥☆過路亽.° 提交于 2019-12-23 03:34:52
本文是基于MySQL-5.7.7-rc版本,未来可能 还会发生更多变化。 1、即将删除的特性 1.1、InnoDB monitoring features,详见:WL#7377(访问地址:http://dev.mysql.com/worklog/task/?id=7377,下面的其他WL,可以自行替换) 【建议】可以动态修改 innodb_status_output、innodb_status_output_locks 两个参数的值打印相关信息,或者直接查看INFORMATION_SCHEMA下的相关表。 1.2、old-password,4.1之前的就密码认证模式已经禁用,old_passwords参数不可用, 【建议】尽快升级旧密码串,同时升级MySQL版本,不要告诉我,你还在用4.1甚至更早的版本。 1.3、部分SQL语法不可用 1.3.1、ALTER TABLE … IGNORE。 1.3.2、INSERT DELAY特性,但保留这个语法。 1.3.3、ERROR_FOR_DIVISION_BY_ZERO, NO_ZERO_DATE, NO_ZERO_IN_DATE SQL MODES 等几个SQL MODE合并到STRICT中。不过可能会导致replication失败,所以还在考虑中。 1.3.4、不再支持YEAR(2),建议尽快升级成YEAR(4)。 【建议

《转》MySQL 5.7版本新特性连载

扶醉桌前 提交于 2019-12-23 03:34:38
MySQL 5.7版本新特性连载(一) 本文将和大家一起分享下5.7的新特性,不过我们要先从即将被删除的特性以及建议不再使用的特性说起。根据这些情况,我们在新版本及以后的版本中,应该不再使用,避免未来产生兼容性问题。 本文是基于MySQL-5.7.7-rc版本,未来可能 还会发生更多变化。 1、即将删除的特性 1.1、InnoDB monitoring features,详见: WL#7377 (访问地址: http://dev.mysql.com/worklog/task/?id=7377 ,下面的其他WL,可以自行替换) 【建议】 可以动态修改 innodb_status_output、innodb_status_output_locks 两个参数的值打印相关信息,或者直接查看INFORMATION_SCHEMA下的相关表。 1.2、old-password,4.1之前的就密码认证模式已经禁用,old_passwords参数不可用,WL#8006 【建议】 尽快升级旧密码串,同时升级MySQL版本,不要告诉我,你还在用4.1甚至更早的版本。 1.3、部分SQL语法不可用 1.3.1、ALTER TABLE … IGNORE。 1.3.2、INSERT DELAY特性,但保留这个语法。WL#6073 1.3.3、ERROR_FOR_DIVISION_BY_ZERO, NO

MySQL3:存储过程和函数

。_饼干妹妹 提交于 2019-12-22 21:35:26
什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理。本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用、查看、修改、删除存储过程和存储函数等。使用的数据库和表还是之前写JDBC用的数据库和表: create database school; use school; create table student ( studentId int primary key auto_increment not null, studentName varchar(10) not null, studentAge int, studentPhone varchar(15) ) insert into student values(null,'Betty', '20', '00000000'); insert into student values(null,'Jerry', '18', '11111111'); insert into student values(null,'Betty', '21', '22222222'); insert into student values(null,'Steve', '27', '33333333'); insert into student values(null,'James', '22

Mysql binlog二进制日志

冷暖自知 提交于 2019-12-22 03:03:07
Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement : 每一条会修改数据的 实际原sql语句 都会被记录在binlog中 。 优点: 不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能 。(相比row能节约多少性能与日志量,这个取决于应用的SQL情况,正常同一条记录修改或者插入row格式所产生的日志量还小于Statement产生的日志量,但是考虑到如果带条件的update操作,以及整表删除,alter表等操作,ROW格式会产生大量日志,因此在考虑是否使用ROW格式日志时应该跟据应用的实际情况,其所产生的日志量会增加多少,以及带来的IO性能问题。) 缺点: 由于记录的只是执行语句,为了这些语句能在slave上正确运行,因此 还必须记录每条语句在执行的时候的一些上下文信息 ,以保证所有语句能在slave得到和在master端执行时候相同 的结果。另外mysql 的复制,像一些特定函数功能,slave可与master上要保持一致会有很多相关问题(如sleep()函数, last_insert_id(),以及user-defined functions(udf)会出现问题). 使用以下函数的语句也无法被复制: * LOAD_FILE() * UUID() * USER() * FOUND_ROWS() *