2017-03-25 106 views
1

我已经为php中的所有表编写了更新函数,它以更好的方式工作,但我认为函数太长了。你能帮我把它缩小吗?或者你能提出其他简单的技巧或方法吗?更新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将它们合并成一个字符串。

您还应该使用mysqli_real_escape_string()来防止SQL注入。

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

然后你使用这样的:

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"; 
} 

注意,你失踪的第一个参数mysqli_query(),数据库连接。

-1

该更新函数可以被缩小为。

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