在 PHP 中,我想使用字段/值对的关联数组中包含的数据插入数据库。
例子:
$_fields = array('field1'=>'value1','field2'=>'value2','field3'=>'value3');
生成的 SQL 插入应如下所示:
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; --;
幸运的是,不支持多个查询,但是引用和转义对于防止 SQL 注入漏洞是必不可少的。
你如何编写你的 PHP Mysql 插入?
注意:PDO 或 mysqli 准备的查询目前不是我的选择,因为代码库已经广泛使用 mysql - 计划进行更改但需要大量资源来转换?