mysql函数

int型参数的SQL注入

牧云@^-^@ 提交于 2020-03-26 23:12:53
类似PHP语言的 mysql_real_escape_string() 的函数,在用来防范SQL注入的时候,可能会遇到int型注入成功的情况。 mysql_real_escape_string()用法 mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。 下列字符受影响: \x00 \n \r \ ' " \x1a 如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。 使用案例 过滤String型参数的代码案例: <?php $con = mysql_connect("localhost", "hello", "321"); if (!$con){ die('Could not connect: ' . mysql_error()); } // 获得用户名和密码的代码 $user = $_POST("user"); $pwd = $_POST("pwd"); // 转义用户名和密码,以便在 SQL 中使用 $user = mysql_real_escape_string($user); $pwd = mysql_real_escape_string($pwd); $sql = "SELECT * FROM users WHERE user='" . $user . "' AND password='" . $pwd

mysql HAVING用法

这一生的挚爱 提交于 2020-03-24 14:42:53
原文链接:https://www.cnblogs.com/mr-wuxiansheng/p/11188733.html having字句可以让我们筛选分组之后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。 而having子句在聚合后对组记录进行筛选。我的理解就是真实表中没有此数据,这些数据是通过一些函数产生的。 一、显示每个地区的总人口数和总面积. SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region 先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中 的不同字段(一或多条记录)作运算。 二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。 SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region HAVING SUM(area)>1000000 在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。 相反,having子句可以让我们筛选分组后的各组数据 三、 having单独使用,与where类似 eg: 查询单笔订单充值金额大于1000的 SELECT

php-ini

我的未来我决定 提交于 2020-03-24 13:32:24
[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 None) ,或是一个表达式(如: E

mysql 基础列题

醉酒当歌 提交于 2020-03-24 11:50:44
1:emp表中查询公司总共有几个部门 注意,会查询出来大量重复的,使用函数distinct select distinct job from scott.emp; 2:查询公司工资在1000-3000之间的人有哪些 使用函数between ...and.. select * from scott.emp where sal between 3000 and 5000; 3:查询公司没有奖金的人 使用null 和“” 不一样 select * from scott.emp where comm is null; 4:查询公司员工职位是'manager','clerk' 的人 select * from scott.emp where lower(job) in('manager','clerk'); 查询不是这两个职位的人 select * from scott.emp where upper(job) not in('MANAGER','CLERK'); 5:查询工资最高的人 查询每个部门工资最高的人?--分组查询 select deptno,max(sal) from scott.emp group by deptno ; 完整版 29:-每个部门的最高薪水是多少 select * from scott.emp where (deptno,sal) in (select

MySQL 自定义变量@ 常用案例

断了今生、忘了曾经 提交于 2020-03-23 16:24:00
3 月,跳不动了?>>> 以下文章来源于SQL开发与优化,作者郑松华 大家好,我是知数堂SQL 优化班老师 网名:骑龟的兔子 很久没有写文章,最近碰到了一个非常有意思的Oracle SQL 案例, 这个案例,我用了一些窗口函数来解决的,后来想想,能否跟MySQL 有所关联,就用一个SQL,总结了@的常用用法。 首先我们看下,如下案例 with w1 as ( select 1 rn , 'cityhp01' mber_id from dual union all select 2 , 'uvis6921' mber_id from dual union all select 3 , 'uvis6921' mber_id from dual union all select 4 , 'moonhwa119' mber_id from dual union all select 5 , 'moonhwa119' mber_id from dual union all select 6 , 'b2500795' mber_id from dual union all select 7 , 'b2500795' mber_id from dual union all select 8 , 'b2500795' mber_id from dual union all select 9 ,

MYSQL常见运算符和函数

最后都变了- 提交于 2020-03-23 13:02:45
字符函数 (1)CONCAT():字符连接 SELECT CONCAT(‘IMOOC’,’-‘,’ MySQL ’);//IMOOC-MySQL SELECT CONCAT (first_name,last_name) AS fullname FROM test; (2)CONCAT_WS():使用指定的分隔符进行字符连接,(第一个位置指定分隔符,后面的为分割的内容) SELECT CONCAT_WS(‘%’,’abc’,’def’); //第一个是指定的分隔符;//abc%def (3)FORMAT():数字格式化 SELECT FORMAT(123560.75,2); //123,560.75;第二个参数若为0(四舍五入),显示整数 (4)LOWER():转化小写 (5)UPPER():转换大写 SELECT UPPER(‘mysql’);//MYSQL (6)LEFT():获取左侧字符 (7)RIGHT():获取右侧字符 SELECT LEFT (‘MYSQL’,2); //MY SELECT LOWER(LEFT(‘mYsql’,2)); //函数嵌套;//my (8)LENGTH():取得字符串长度 LENGTH(‘MYSQL ’);//6;最后加了个空格 (9)LTRIM():清空字符串前面(左端)空格 (10)RTRIM():清空字符串末尾(右端)空格 (11

关于MySQL与DMsql探寻

狂风中的少年 提交于 2020-03-22 23:09:36
【前言】 DMsql指的是达梦数据库,这里只是一些浅显的sql。结合实际的运行效果和资料来探寻原理。我们以达梦数据库自带的表GRADE以及mysql随意创建的一个表作为测试。 1、查询全部数据 达梦数据库 select * from "SYSDBA"."GRADE"; mysql数据库 SELECT * FROM ceshi; 2、更换表头 【加不加as的效果是一样的】 达梦数据库 select "CLASSID" frozen,"STU_COUNT" red ,"TEACHER_NAME" as red,"COURSE" from "SYSDBA"."GRADE"; MySQL数据库 SELECT test as frozen, NAME as wcl,NAME wcl FROM ceshi; 3、组合新列 达梦与mysql只能拼接数字,不能拼接列或者其他字符 达梦数据库 select (123232+213213) as frozen from "SYSDBA"."GRADE"; MySQL数据库 SELECT (1232+13121) as frozen FROM ceshi; 4、区间查询 达梦数据库 select "CLASSID","STU_COUNT","TEACHER_NAME","COURSE" from "SYSDBA"."GRADE" where "STU

Mysql导出存储过程

最后都变了- 提交于 2020-03-22 15:50:28
转载:https://www.cnblogs.com/yuepeng/archive/2010/09/21/1832775.html Mysql导出存储过程 在部署某学院的网站时,发现一个错误: 1 FUNCTION config_get does not exist. 找到代码一看,是conn.prepareCall("{call config_get(?,?,?)}");这一句出了错。上网查了查,这是在调用存储过程, 那么config_get就是存储过程名。到数据库里用show procedure status;看了看,一个存储过程也没有。也就是导数据库时没有导存储过程。 下面是导出存储过程的代码 1 # mysqldump -u 数据库用户名 -p -n -t -d -R 数据库名 > 文件名 其中,-d 表示--no-create-db, -n表示--no-data, -t表示--no-create-info, -R表示导出function和procedure。所以上述代码表示仅仅导出函数和存储过程,不导出表结构和数据。但是,这样导出的内容里,包含了trigger。再往mysql中导入时就会出问题,错误如下: ERROR 1235 (42000) at line **: This version of MySQL doesn't yet support ‘multiple

mysql中Base64编码与解码

跟風遠走 提交于 2020-03-22 14:25:05
3 月,跳不动了?>>> 在mysql中,有些数据我们不想让别人直观的看到,这时可以使用Base编码与解码。 MySQL在5.6版本的时候增加了to_base64和from_base64函数,在此之前没有内部函数, 用法举例: 1、to_base64 编码 SELECT to_base64('110101202003242375050505') 2、from_base64 解码 SELECT from_base64('MTEwMTAxMjAyMDAzMjQyMzc1MDUwNTA1'); 来源: oschina 链接: https://my.oschina.net/zhenggao/blog/3208238

MySQL学习(5)

血红的双手。 提交于 2020-03-21 09:35:29
三 触发器   对某个表进行某种操作欠货(如:增删改查),希望触发某个动作,可以使用触发器。   1.创建触发器 create trigger trigger1_before_insert_tb1 before insert on tb1 for each row begin ... endbefore可以换成after, insert可以换成delete,update.      在想tb1插入数据后,tb2结果:      触发器获得用户提交的数据: create trigger tri_after_insert_tb1 after insert on tb1 for each row begin NEW.nid (为用户新提交过来的 tb1.nid的值) NEW.name(为用户新提交过来的tb1.name的值) insert into tb2(num) values(NEW.nid); end create trigger tri_after_delete_tb1 after delete on tb1 for each row begin OLD.nid (为删除的tb1.nid的值) OLD.name(为删除的tb1.name的值) insert into tb2(num) values(OLD.nid); end create trigger tri_after