phpでは,実行するsql文を配列で色っぽく生成することを実現する.
1542 ワード
このような状況に遭遇するのではないでしょうか.データを取得するたびにデータと履歴バージョンに一定の差がありますが、ThinkPHPのaddAll()関数では、既存のデータを削除して再書き込みします.これは明らかに私たちが望んでいるものではありません.しかし、自分でsqlを書くたびに数十個のフィールドも酔っ払っています.どのように優雅で簡単にsqlの自動生成を実現しますか?そこで次の方法がありました.
もちろん、この方法には吟味できるところがたくさんあります.使えますが、一番いいものではありません.園子の猿たちはもっと良い方法がありますか?教えてください!
/**
* [array_to_sql key value sql]
* @param [type] $array [key, value ]
* @param string $type [sql insert,update]
* @param array $exclude [ ]
* @return [string] [ sql]
*/
function array_to_sql($array, $type='insert', $exclude = array()){
$sql = '';
if(count($array) > 0){
foreach ($exclude as $exkey) {
unset($array[$exkey]);// key
}
if('insert' == $type){
$keys = array_keys($array);
$values = array_values($array);
$col = implode("`, `", $keys);
$val = implode("', '", $values);
$sql = "(`$col`) values('$val')";
}else if('update' == $type){
$tempsql = '';
$temparr = array();
foreach ($array as $key => $value) {
$tempsql = "'$key' = '$value'";
$temparr[] = $tempsql;
}
$sql = implode(",", $temparr);
}
}
return $sql;
}
もちろん、この方法には吟味できるところがたくさんあります.使えますが、一番いいものではありません.園子の猿たちはもっと良い方法がありますか?教えてください!