更新php中所有表更新的功能

时间:2017-03-25 04:18:36

标签: php mysqli

我已经为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;
}

其中a是数据作为数组,b是表名,c是条件。

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

2 个答案:

答案 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 :(得分:-1)

可以将更新功能缩小为。

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