2010年7月20日 星期二

php sql語法產生器

```php function SQLCreator($params, $type = 'insert') { $type = strtolower($type); if (! in_array($type, ['insert', 'update'])) { die('errors'); } $data = []; $result = ''; foreach ($params['value'] as $key => $value) { if (in_array($key, $params['field'])) { $field = sprintf('`%s`', $key); $value = sprintf("'%s'", (! get_magic_quotes_gpc()) ? addslashes($value) : $value); $data[$field] = $value; } } switch ($type) { case 'insert': $table = $params['table']; $fields = implode(',', array_keys($data)); $values = implode(',', array_values($data)); $result = sprintf('INSERT INTO `%s` (%s) VALUES (%s)', $table, $fields, $values); break; case 'update': $table = $params['table']; $fields = []; foreach ($data as $key => $value) { $fields[] = sprintf('%s=%s', $key, $value); } $fields = implode(',', $fields); $result = sprintf('UPDATE SET `%s` (%s)', $table, $fields); if ($params['condition']) { $result .= ' '.$params['condition']; } break; } return $result; } $params = [ //定義資料表名 'table' => 'test', //定義資料表欄位 'field' => ['field'], //定義欄位的值array('欄位'=>'值'); 'value' => [ 'field' => 'test', ], //在使用UPDATE時所需的條件 'condition' => 'WHERE s_id = 1', ]; // 第一個參數是傳入insert或者是update echo SQLCreator($params, 'update'); /* * PS.無法在值裡面定義MySQL的函式喔,這一點要注意,如果要在欄位裡面用成MySQL的函式就要再修正一下傳入值的方法, * 有要用的人就自行修改,不夠這個目前足以應付很多的INSERT或是UPDATE了 */ ```