2017-03-25 11 views
1

私はphp.Itのすべてのテーブルの更新関数を書いていますが、これは非常に良い方法です。しかし、関数が長すぎると思います。あなたはそれを最小化するために私を助けてもらえますか?または、他の簡単なテクニックや方法を提案できますか?更新プログラムphpのすべてのテーブル更新の機能

は、これは私の更新機能

function updatetbl($a,$b,$c) 
{ 
    $a=self::data($a);//calling function inside the function 
    $a.="'WHERE "; 
    $c=self::data($c); 
    $c.="'"; 
    $SQL="Update $b set $a $c"; 
    $result=mysqli_query($SQL); 
    return $result; 
} 

配列などのデータがあり、Bはテーブル名であり、cが条件です。

function data($a) 
{ 
    $fields=$a; 
    $data=""; 
    $separator = ''; 
    foreach($fields as $key=>$value) 
    { 
     $data .= $separator . $key . '=\'' . $value; 
     $separator = '\','; 
    } 
    return $data; 
} 
+0

あなたは行数を最小にすることを意味しますか? –

+0

はい、またはテーブルを更新するための他の簡単な方法を提案することもできます。 –

答えて

0

文字列にそれらを結合する配列の要素をループにarray_walkを使用し、implode

SQLインジェクションを防ぐには、mysqli_real_escape_string()も使用する必要があります。あなたはmysqli_query()に最初の引数が欠落していた

function updatetbl($dbcon, $table, $fields, $wheres) { 
    $where_string = empty($wheres) ? '' : "WHERE " . self::data($wheres); 
    $fields_string = self::data($fields); 
    return mysqli_query($dbcon, "UPDATE `$table` SET $fields_string $where_string"; 
} 

注意、データベース接続:

function data($a, $dbcon) { 
    return implode(', ', array_map(function($val, $column) use($dbcon) { 
     return "`$column` = '" . mysqli_real_escape_string($dbcon, $val) . "'"; 
}, $a); 

次に、あなたはこのようにそれを使用しています。

-1

updatetble関数を次のように縮小することができます。

function updatetbl($a,$b,$c) 
{ 
    $a = self::data($a) . "'WHERE "; 
    $c = self::data($c) . "'"; 
    return mysqli_query("Update $b set $a $c") 
} 
関連する問題