PHP, ben alan / değer çiftleri bir ilişkisel dizi içerdiği verileri kullanarak bir veritabanına eklemek istediğiniz.
Example:
$_fields = array('field1'=>'value1','field2'=>'value2','field3'=>'value3');
Aşağıdaki gibi çıkan SQL insert bakmak gerekir:
INSERT INTO table (field1,field2,field3) VALUES ('value1','value2','value3');
Ben aşağıdaki PHP tek-liner ile geldi:
mysql_query("INSERT INTO table (".implode(',',array_keys($_fields)).") VALUES (".implode(',',array_values($_fields)).")");
Bu birleşmeli dizinin anahtarlarını ve değerlerini ayırır ve implodes
virgülle ayrılmış bir dize oluşturmak için. Sorun kaçmak ya da veritabanına yerleştirildi değerleri alıntı olmamasıdır. $_fields
, aşağıdaki ihtiva etmesi tehlike göstermek için, düşünün:
$_fields = array('field1'=>"naustyvalue); drop table members; --");
Aşağıdaki SQL oluşturulmuş olacak:
INSERT INTO table (field1) VALUES (naustyvalue); drop table members; --;
Neyse ki, multiple queries are not supported, yine alıntı ve kaçan SQL enjeksiyon açıklarını önlemek için gereklidir.
How do you write your PHP Mysql Inserts?
Note: PDO or mysqli prepared queries aren't currently an option for me because the codebase already uses mysql extensively - a change is planned but it'd take alot of resources to convert?