如何在php中创建动态函数

时间:2013-04-07 18:27:16

标签: php function

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

3 个答案:

答案 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;
}
?>