1.load data infile
?View Code MYSQL
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char' ]
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number LINES]
[(col_name_or_user_var,...)]
[SET col_name = expr,...)]
LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并装入一个表中。
这是一个很危险的内置函数,所以一般建议禁用掉(除非程序有用到本地文件)
通过在my.cnf中设置
1
local-infile=0|1 0表示禁用,1表示开启
2.load_file函数
这个函数和上面的load data 函数类似,都是读取本地文件,对于load_file(filename)函数的使用有如下的条件限制:
读取文件并将这一文件按照字符串的格式返回。 文件的位置必须在服务器上,你必须为文件制定路径全名,而且你还必须拥有FILE 特许权。文件必须可读取,文件容量必须小于 max_allowed_packet字节。
若文件不存在,或因不满足上述条件而不能被读取, 则函数返回值为 NULL。
这个主要通过mysql授权来禁用这个函数,收回用户的file权限
1
revoke file on *.* from 'user'@'IP'//或者不要授予用户的file权限
3.禁用drop命令
1
revoke drop on *.* from 'user'@'IP'
图片插入到数据库不是个好方法,如果你确实要存储图片到数据库的话,修改你的sql语句,不可以直接插入的。INSERT into person(p_id,p_name,p_sex,p_age) value("asdsadssdsadfff","addsdsa","dddd",113)
update person set p_image = LOAD_FILE('D:\incident1.jpg') where p_id = "asdsadssdsadfff"
建议把'D:\incident1.jpg'放在mysl的安装目录里面,避免权限问题。。。
解释:sql必须要有对 'D:\incident1.jpg'文件 和相应的路径 读权限,要不也不可以的。 另外检查LOAD_FILE 函数是否被禁用。这个函数是个危险的函数,很容易利用该函数对数据库攻击。
LOAD_FILE(file_name):
读取file_name文件 并以字符串形式返回,使用这个函数时,file_name必须存在于服务器上,而且是完整路径,sql要具有file_name的读取权限,还有该文件的size必须小于数据库 max_allowed_packet的值,否则读取的值为空。如果文件不存在或者sql没有读权限,那么该函数讲返回null
修改这e:\wwwroot\baixiang\wwwroot\admin\connect.php的第二行,里面的mysql_connect函数的三个参数,分别是服务器的IP地址、MYSQL数据库的用户名和密码。要么是你上面函数的参数给错了,要么是指定IP那个机器的MYSQL数据库服务没有启动。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)