mysql函数

【红日Day12-CTF】htmlentities造成的SQL注入

别等时光非礼了梦想. 提交于 2020-01-19 20:03:40
练习记录 复现代码: index.php <?php require 'config.php' ; if ( isset ( $_REQUEST [ 'username' ] ) ) { if ( preg_match ( "/(?:\w*)\W*?[a-z].*(R|ELECT|OIN|NTO|HERE|NION)/i" , $_REQUEST [ 'username' ] ) ) { die ( "Attack detected!!!" ) ; } } if ( isset ( $_REQUEST [ 'password' ] ) ) { if ( preg_match ( "/(?:\w*)\W*?[a-z].*(R|ELECT|OIN|NTO|HERE|NION)/i" , $_REQUEST [ 'password' ] ) ) { die ( "Attack detected!!!" ) ; } } function clean ( $str ) { if ( get_magic_quotes_gpc ( ) ) { $str = stripslashes ( $str ) ; } return htmlentities ( $str , ENT_QUOTES ) ; } $username = @ clean ( ( string ) $_GET [

对Linux下MySQL C的api 简单封装

大憨熊 提交于 2020-01-19 03:47:57
下面是网上找到的网友说法: 博文一 : 在使用 mysql_query() 进行一次查询后,一般要用这两个函数之一来把结果存到一个 MYSQL_RES * 变量中。 两者的主要区别是,mysql_use_result() 的结果必须“一次性用完”,也就是说用它得到一个 result 后,必须反复用 mysql_fetch_row() 读取其结果直至该函数返回 null 为止,否则如果你再次进行 mysql 查询,会得到 “Commands out of sync; you can’t run this command now” 的错误。而 mysql_store_result() 得到 result 是存下来的,你无需把全部行结果读完,就可以进行另外的查询。比如你进行一个查询,得到一系列记录,再根据这些结果,用一个循环再进行数据库查询,就只能用 mysql_store_result() 。 sql_.h gdut17@ubuntu : ~ / code / sql$ cat sql_ . h # ifndef SQL_H # define SQL_H # include "mysql.h" class MySQL_cpp { private : MYSQL * mysql ; //mysql对象 MYSQL_RES * res ; MYSQL_ROW row ; public :

我的PHP5 + Apache2.2 + MySql5.1配置经历

て烟熏妆下的殇ゞ 提交于 2020-01-18 12:06:01
昨天突然又想弄点PHP,于是在我的本本上开始配置,以前也配置过,主要问题连接MySqL不成功,提示Fatal error: Call to undefined function mysql_connect() 。上网找资料,不是说设置环境变量就是把php.ini和libmysql.dll拷到system32目录下什么的,都试过了,可都没成功,最后就放弃了。这次遇到同样的问题,但我下了决心:不弄成功我就把我的本本砸了!终于,我还是心疼我的本本,刚才配置成功了。一陈喜悦^o^…… 配置环境: Windows Xp Professional Sp2 + Apache 2.2.4 + PHP 5.2.5 + Mysql 5.1.33 现把经验分享如下: 关键目录表示:PHP安装目录—— PHP_Dir ,Apache安装目录—— Apache_Dir 。 注意 目录字串末尾都没有“/”或“\” 1.安装 MySql,PHP,Apache,安装一般没有什么问题,关键在于配置。 2.配置 php.ini: (1)把 PHP_Dir 目录下的 php.ini-dist 复制一份,重命名为 php.ini 。 (2)打开 php.ini ,查找定位到 extension_dir ,设置为 extension_dir = " PHP_Dir "。注意 PHP_Dir 结束不包括斜杠“/”号

python下的MySQLdb使用

蹲街弑〆低调 提交于 2020-01-18 07:59:57
下载安装MySQLdb <1>linux版本 http://sourceforge.net/projects/mysql-python/ 下载,在安装是要先安装setuptools,然后在下载文件目录下,修改mysite.cfg,指定本地mysql的mysql-config文件的路径 <2>windows版本 网上搜索到一个http://www.technicalbard.com/files/MySQL-python-1.2.2.win32-py2.6.exe 安装后import MySQLdb会出现 DeprecationWarning: the sets module is deprecated 这样一个警告,google之 原因是2.6不知sets这个模块,不过已经添加了set内置函数。找到MySQLdb文件夹的中__init__.py,注释掉from sets import ImmutableSet class DBAPISet(ImmutableSet):添加class DBAPISet(frozenset):;找到converters.py注释掉from sets import BaseSet, Set。然后修改第45行和129行中的Set为set。 搞定。 下面开始操作的demo: Python代码 1 # -*- coding: utf-8 -*- 2

mysql函数

烈酒焚心 提交于 2020-01-17 18:35:34
存储过程和函数的区别 存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、更新 函数:有且仅有一个返回。适合做处理数据后返回一个结果 语法 参数列表 包含两部分:参数名、参数类型 函数体肯定会有RETURN语句,否则会报错 使用 DELIMITER 设置结束标记 DELIMITER $ # 创建函数 CREATE FUNCTION 函数名 ( 参数列表 ) RETURNS 返回类型 BEGIN 函数体 END $ # 调用语法 SELECT 函数名 ( 参数列表 ) $ 案例 1.无参有返回 DELIMITER $ # 返回公司员工的个数 CREATE FUNCTION fun_test ( ) RETURNS INT BEGIN DECLARE c INT DEFAULT 0 ; SELECT COUNT ( * ) INTO c FROM tb_employee ; RETURN c ; END $ # 调用 SELECT fun_test ( ) $ 2.有参有返回 DELIMITER $ # 根据员工名,返回他的工资 CREATE FUNCTION fun_test ( empName VARCHAR ( 20 ) ) RETURNS DOUBLE BEGIN SET @sal = 0 ; # 可使用局部变量和用户变量,这里使用用户变量 SELECT salary

Mysql存储过程

爱⌒轻易说出口 提交于 2020-01-17 05:28:15
SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。 存储过程的优点: (1).增强SQL语言的功能和灵活性:存储过程可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2).标准组件式编程:存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3).较快的执行速度:如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。 (4).减少网络流量:针对同一个数据库对象的操作(如查询、修改)

mysql复习(2)

和自甴很熟 提交于 2020-01-16 19:38:24
一、数据定义:   SQL数据的定义包括模式的定义、表定义、视图定义和索引的定义。   1.基本的模式定义情况如下表。      2.一个关系数据库管理系统的实例中可以创建多个数据库,一个数据库中可以建立多个模式,一个模式下面通常包括多个表、视图和数据库对象。 二、模式的定义与删除   1.定义模式:CREATE SCHEMA <模式名> AUTHORIZATION<用户名>;     (1)要创建模式,要调用该命令的数据库管理员权限,获得数据库管理员授予的CREATE SCHEMA的权限     (2)为用户WANG定义一个学生-课程模式S-T       CREATE SCHEMA AUTHORIZATION WANG     2.删除模式:     (1)DROP SCHEMA <模式名><CASCADE|DESTRICT>       DROP SCHEMA ZHANG SCACADE       在语句中删除了模式的通式,该模式中定义的表也会被删除 三、基本表的定义与删除   1.定义基本表     CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束条件]     [,<列名<数据类型>[列级完整性约束条件]]     。。。。     [,<表级完整性约束条件>] );     (1)创建一个“学生”表Student,列级完整性约束条件,Sno是主码

PHP-连接MySQL的增删改查

╄→гoц情女王★ 提交于 2020-01-16 08:54:41
在php中提供了关于连接MySQL以及处理操作结果集的封装函数   常用方法:      1.连接数据库方法       mysqli_connect( string $host = '', string $user = '', string $password = '', string $database = '', string $port = '', string $socket = '')       返回值:返回连接MySQL服务器的连接对象       参数一:$host:主机名         参数二:$user:数据库用户名         参数三:$password:数据库密码         参数四:$database:数据库名称         参数五:$port:服务端口        2.选择数据库方法:       mysqli_select_db( \mysqli $link, string $dbname)       参数一:mysqli_connect方法连接返回的mysqli类型的$link       参数二:数据库名      3.设置数据库字符编码       mysqli_set_charset( \mysqli $link, string $charset)       参数一:mysqli

MySQL工具汇总

我的梦境 提交于 2020-01-16 02:39:19
1. 工具套件集 percona-toolkit: http://www.percona.com/software/percona-toolkit oak-toolkit: http://code.openark.org/forge/openark-kit ps-helper(performance schema 工具函数集): https://github.com/MarkLeith/dbahelper 2. MySQL 实时状态分析 innotop: https://code.google.com/p/innotop/ orzdba: http://code.taobao.org/p/orzdba/src/trunk/orzdba mytop: http://jeremy.zawodny.com/mysql/mytop/ 3. mysql客户端&开发工具 Adminer:http://www.adminer.org/ MyQuery:http://sourceforge.net/projects/myquery/ Hopper(存储过程调试工具):http://www.upscene.com/products.hopper.index.php 4. MySQL性能监控 mysql-statsd: https://github.com/spilgames/mysql-statsd

mysql复习1

家住魔仙堡 提交于 2020-01-15 13:31:14
SQL语句分为以下三种类型: DML: Data Manipulation Language 数据操纵语言,用于查询与修改数据记录,包括如下SQL语句: INSERT:添加数据到数据库中 UPDATE:修改数据库中的数据 DELETE:删除数据库中的数据 SELECT:选择(查询)数据 DDL: Data Definition Language 数据定义语言,用于定义数据库的结构,比如创建、修改或删除数据库对象,包括如下SQL语句: CREATE TABLE:创建数据库表 ALTER TABLE:更改表结构、添加、删除、修改列长度 DROP TABLE:删除表 CREATE INDEX:在表上建立索引 DROP INDEX:删除索引 DCL: Data Control Language 数据控制语言,DCL用来控制数据库的访问,包括如下SQL语句: GRANT:授予访问权限 REVOKE:撤销访问权限 COMMIT:提交事务处理 ROLLBACK:事务处理回退 SAVEPOINT:设置保存点 LOCK:对数据库的特定部分进行锁定 注意点: 1.列的别名使用双引号。 2.日期和字符只能在单引号中出现。 3.使用 desc table 显示表结构。 4.WHERE 子句紧随 FROM 子句。 5.使用 LIKE 运算选择类似的值选择条件可以包含字符或数字:% 代表零个或多个字符