PHP函数封装!

2025-05-01 18:07:05
推荐回答(2个)
回答1:

你传入的sql不应该那样传,可用性太低,函数或方法应该传入变量,或者说可变的值。上代码,不懂的问

/*封装函数*/
$arr = $_POST;
//$sql = "INSERT INTO ui234_user (username,password,u_name,u_time) VALUES (?,?,?,?)";
$table_name = "ui234_user";
$field_arr = array('username','password','u_name','u_time');

insert($arr,$table_name,$field_arr);

function insert($arr,$table_name,$field_arr){
    $sql = 'INSERT INTO '.$table_name.' (';
    $field_name = '';//名称
    $field_value = '';//值
    $field_post = '';//post取值
    /*拼装字段*/
    foreach ($field_arr as $key => $value) {
         if($key == count($field_arr)-1){
         $field_name .= $value;
         $field_value.= '?';
         $field_post .= '$arr["'.$field_name.'"]';
         }else{
         $field_name .= $value.',';
         $field_value.= '?,';
         $field_post .= '$arr["'.$value.'"],';
         }
    }
    $sql .= $field_name.') VALUES ('.$field_value.');';

    $mysqli=connect();
    $stmt = $mysqli->prepare("{$sql}");
    $exe_str = '$stmt->bind_param("ssss",'.$field_post.');';
    //输出字符串结果
    echo $sql.'
';
    echo $exe_str;

    //然后用eval执行字符串代码
    eval($exe_str);//相当于是:$stmt->bind_param('ssss',$arr['username'],$arr['password'],$arr['u_name'],$arr['u_time']);

    stmt->execute();
}

回答2:

php的封装就是把要封装的代码携程一个函数,然后在页面里面调用,asp.net是把某些代码封装成dll文件调用,php是把代码封装成函数调用,当然也可以对封装的代码进行加密。