PHP函数封装!

PHP函数封装!,第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'<hr/>';

    echo $exe_str;

    //然后用eval执行字符串代码

    eval($exe_str);//相当于是:$stmt->bind_param('ssss',$arr['username'],$arr['password'],$arr['u_name'],$arr['u_time']);

    stmt->execute();

}

<php  

//数据库连接类,不建议直接使用DB,而是对DB封装一层  

//这个类不会被污染,不会被直接调用  

class DB {  

    //pdo对象  

    private $_pdo = null;  

    //用于存放实例化的对象  

    static private $_instance = null;  

      

    //公共静态方法获取实例化的对象  

    static protected function getInstance() {  

        if (!(self::$_instance instanceof self)) {  

            self::$_instance = new self();  

        }  

        return self::$_instance;  

    }  

      

    //私有克隆  

    private function __clone() {}  

      

    //私有构造  

    private function __construct() {  

        try {  

            $this->_pdo = new PDO(DB_DNS, DB_USER, DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES 'DB_CHARSET));  

            $this->_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  

        } catch (PDOException $e) {  

            exit($e->getMessage());  

        }  

    }  

      

    //新增  

    protected function add($_tables, Array $_addData) {  

        $_addFields = array();  

        $_addValues = array();  

        foreach ($_addData as $_key=>$_value) {  

            $_addFields[] = $_key;  

            $_addValues[] = $_value;  

        }  

        $_addFields = implode(',', $_addFields);  

        $_addValues = implode("','", $_addValues);  

        $_sql = "INSERT INTO $_tables[0] ($_addFields) VALUES ('$_addValues')";  

        return $this->execute($_sql)->rowCount();  

    }  

      

    //修改  

    protected function update($_tables, Array $_param, Array $_updateData) {  

        $_where = $_setData = '';  

        foreach ($_param as $_key=>$_value) {  

            $_where = $_value' AND ';  

        }  

        $_where = 'WHERE 'substr($_where, 0, -4);  

        foreach ($_updateData as $_key=>$_value) {  

            if (Validate::isArray($_value)) {  

                $_setData = "$_key=$_value[0],";  

            } else {  

                $_setData = "$_key='$_value',";  

            }  

        }  

        $_setData = substr($_setData, 0, -1);  

        $_sql = "UPDATE $_tables[0] SET $_setData $_where";  

        return $this->execute($_sql)->rowCount();  

    }  

      

    //验证一条数据  

    protected function isOne($_tables, Array $_param) {  

        $_where = '';  

        foreach ($_param as $_key=>$_value) {  

            $_where =$_value' AND ';  

        }  

        $_where = 'WHERE 'substr($_where, 0, -4);  

        $_sql = "SELECT id FROM $_tables[0] $_where LIMIT 1";  

        return $this->execute($_sql)->rowCount();  

    }  

      

    //删除  

    protected function delete($_tables, Array $_param) {  

        $_where = '';  

        foreach ($_param as $_key=>$_value) {  

            $_where = $_value' AND ';  

        }  

        $_where = 'WHERE 'substr($_where, 0, -4);  

        $_sql = "DELETE FROM $_tables[0] $_where LIMIT 1";  

        return $this->execute($_sql)->rowCount();  

    }  

      

    //查询  

    protected function select($_tables, Array $_fileld, Array $_param = array()) {  

        $_limit = $_order = $_where = $_like = '';  

        if (Validate::isArray($_param) && !Validate::isNullArray($_param)) {  

            $_limit = isset($_param['limit'])  'LIMIT '$_param['limit'] : '';  

            $_order = isset($_param['order'])  'ORDER BY '$_param['order'] : '';  

            if (isset($_param['where'])) {  

                foreach ($_param['where'] as $_key=>$_value) {  

                    $_where = $_value' AND ';  

                }  

                $_where = 'WHERE 'substr($_where, 0, -4);  

            }  

            if (isset($_param['like'])) {  

                foreach ($_param['like'] as $_key=>$_value) {  

                    $_like = "WHERE $_key LIKE '%$_value%'";  

                }  

            }  

        }  

        $_selectFields = implode(',', $_fileld);  

        $_table = isset($_tables[1])  $_tables[0]','$_tables[1] : $_tables[0];  

        $_sql = "SELECT $_selectFields FROM $_table $_where $_like $_order $_limit";  

        $_stmt = $this->execute($_sql);  

        $_result = array();  

        while (!!$_objs = $_stmt->fetchObject()) {  

            $_result[] = $_objs;  

        }  

        return Tool::setHtmlString($_result);  

    }  

      

    //总记录  

    protected function total($_tables, Array $_param = array()) {  

        $_where = '';  

        if (isset($_param['where'])) {  

            foreach ($_param['where'] as $_key=>$_value) {  

                $_where = $_value' AND ';  

            }  

            $_where = 'WHERE 'substr($_where, 0, -4);  

        }  

        $_sql = "SELECT COUNT() as count FROM $_tables[0] $_where";  

        $_stmt = $this->execute($_sql);  

        return $_stmt->fetchObject()->count;  

    }  

      

    //得到下一个ID  

    protected function nextId($_tables) {  

        $_sql = "SHOW TABLE STATUS LIKE '$_tables[0]'";  

        $_stmt = $this->execute($_sql);  

        return $_stmt->fetchObject()->Auto_increment;  

    }  

  

  

    //执行SQL  

    private function execute($_sql) {  

        try {  

            $_stmt = $this->_pdo->prepare($_sql);  

            $_stmt->execute();  

        } catch (PDOException  $e) {  

            exit('SQL语句:'$_sql'<br />错误信息:'$e->getMessage());  

        }  

        return $_stmt;  

    }  

}  

>

封装是php面向对象的其中一个特性,将多个可重复使用的函数封装到一个类里面。在使用时直接实例化该类的某一个方法,获得需要的数据

如果是私有的方法和属性值,外部无法访问,具有一定的保护作用。

面向对象之封装 例子

class A{

public $name = '老王';

// protected $name = '老王';

//private $name = '老王';

//自己访问

public function saya(){

return $this->name;

}

}

//实例化对象

$b = new A;

//public:外部、家族、自己都可以访问

//protected:家族和自己都可以访问,外部无法访问

//private:自己可以访问,外部和家族都无法访问

echo '外部访问:'$b->name'<br>'; //如果是私有的,访问不了

echo '家族访问:'$b->sayb()'<br>';

echo '自己访问:'$b->saya()'<br>';

<

class Page{

function 分页函数(参数){

$perNumber = 2;

$page = $_GET['page'];

$count = mysql_query("select count() from people");

$rs = mysql_fetch_array($count);

$totalNumber = $rs[0];

$totalPage = ceil($totalNumber/$perNumber);

if(!isset($page)){

$page = 1;

}

$startCount = ($page-1)$perNumber;

$result = mysql_query("select from people limit $startCount,$perNumber");

$num = mysql_numrows($result);

for($i=0;$i<$num;$i++){

$a = mysql_result($result,$i,"id");

$b = mysql_result($result,$i,"name");

$c = mysql_result($result,$i,"age");

echo "<br />"$a"<br />"$b"<br />"$c"<br />";

}

}

}

>

正常来说,循环赋值是没问题的,你需要看下,你的sql在数据库中能查出几条结果,

最好数组还是这样定义$arr

=

array();而不是$arr[]

=

array();

简单的测试你数据是否只有一条的方法是在while里边打印个东西

echo

$sql;//打印下你的sql语句,用phpmyadmin执行下看结果

$cnt=1;

while($row

=

$db

->

fetchassoc($result))

{

$cnt++;

echo

$cnt;

}

以上就是关于PHP函数封装!全部的内容,包括:PHP函数封装!、php跪求封装好的pdo预处理类,在线等、什么是php中的封装等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10061382.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存