-1

如何用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.
4

3 回答 3

1

像这样的东西:

$fields = array();
foreach ($data as $k => $v) {
  $fields[] = "`$k`='$v'";
}
$fields = implode(',', $fields);

return "UPDATE $table SET $fields WHERE $data = $value";

但这是构建 SQL 语句的一种非常错误的方式。您可能想要使用PDO

于 2013-04-07T18:36:33.833 回答
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 ;
}
?>

只是一个简单的例子。您应该记住,您必须通过转义数据中的特殊字符来保护您的语句。

于 2013-04-07T18:36:41.890 回答
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;
}
?>
于 2013-04-07T18:36:49.080 回答