```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了
*/
```
不錯丫~~支持你~
回覆刪除