如何使用关联数组写入一个好的PHP数据库插入

前端之家收集整理的这篇文章主要介绍了如何使用关联数组写入一个好的PHP数据库插入前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
PHP中,我想使用字段/值对的关联数组中包含的数据插入数据库.

例:

$_fields = array('field1'=>'value1','field2'=>'value2','field3'=>'value3');

X-

INSERT INTO table (field1,field2,field3) VALUES ('value1','value2','value3');

我已经想出了以下PHP一行:

MysqL_query("INSERT INTO table (".implode(',',array_keys($_fields)).") VALUES (".implode(',array_values($_fields)).")");

它分离关联数组和implodes的键和值,以生成逗号分隔的字符串.问题是它不会转义或引用插入数据库的值.为了说明危险,想象一下,如果$_fields包含以下内容

$_fields = array('field1'=>"naustyvalue); drop table members; --");

生成以下sql

INSERT INTO table (field1) VALUES (naustyvalue); drop table members; --;

幸运的是,multiple queries are not supported,尽管引用和转义是防止sql注入漏洞的关键.

你如何编写PHP MysqL插件

注意:PDO或MysqLi准备的查询目前不是我的选择,因为代码库已经广泛使用了MysqL – 一个改变是计划的,但是需要大量的资源来转换?

我唯一会改变的是使用sprintf进行可读性
$sql = sprintf(
    'INSERT INTO table (%s) VALUES ("%s")',implode(',array_keys($_fields)),implode('","',array_values($_fields))
);
MysqL_query($sql);

并确保值被转义.

猜你在找的PHP相关文章