如何使用关联数组写入一个好的PHP数据库插入
发布时间:2020-12-13 16:24:28 所属栏目:PHP教程 来源:网络整理
导读:在 PHP中,我想使用字段/值对的关联数组中包含的数据插入数据库. 例: $_fields = array('field1'='value1','field2'='value2','field3'='value3'); X- INSERT INTO table (field1,field2,field3) VALUES ('value1','value2','value3'); 我已经想出了以下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); 并确保值被转义. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |