如何用php创建动态函数。我想做:
<?php
function update($table, $data=array(), $column, $value)
{
if (is_array ($data)
{
$q = "UPDATE $table SET $column WHERE $data = $value."
}
return $q;
}
当我像这样调用函数时,我该如何获得
$array = array(
'id' => 1,
'name' => 'john',
);
update('user', $array, 'id', 1);
和结果值:
UPDATE users SET id=1, name='John' where id=1.
答案 0 :(得分:1)
这样的事情:
$fields = array();
foreach ($data as $k => $v) {
$fields[] = "`$k`='$v'";
}
$fields = implode(',', $fields);
return "UPDATE $table SET $fields WHERE $data = $value";
但这是构建SQL stements的非常错误的方法。您可能需要使用PDO。
答案 1 :(得分:1)
<?php function update($table, $data=array(), $column, $value) {
if(is_array($data) && !empty($data)){
$toUpdate = array() ;
foreach ($data as $key => $value){
$toUpdate[] = "{$key} = '{$value}'" ;
}
$sets = implode(", ", $toUpdate) ;
$q = "UPDATE {$table} SET {$sets} WHERE {$column} = '{$value}' " ;
return $q ;
}
return null ;
}
?>
这是一个简单的例子。您应该记住,您必须通过转义数据中的特殊字符来保护您的陈述。
答案 2 :(得分:0)
你可以这样做:
<?php
function update($table, $data=array(), $column, $value) {
if(is_array($data) && count($data) > 0){
$q="UPDATE $table SET"
$i = 0;
foreach ($data as $field => $value) {
if ($i > 0) {
$q .= ",";
}
$q .= " $field=$value";
}
$q .= " WHERE $column=$value";
}
return $q;
}
?>