我已经为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;
}
答案 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")
}