I am still a rookie, please point out any mistakes by lightly commenting
Due to shallow work experience, database connection cannot be fully covered. More complex queries may have unexpected bugs
Therefore, this series only provides ideas, which are mature and stable. Please search for the database encapsulation by yourself
$a = Actor::select('first_name', 'last_name') ->where('first_name', 'NICK') ->where('last_name', 'WAHLBERG') ->first() var_dump($a);
object(Actor)[11] public 'first_name' => string 'NICK' (length=4) public 'last_name' => string 'WAHLBERG' (length=8)
$a->update(...); $a->delete();
mysql or the replaced mysqli , pdo can avoid SQL injection attacks, is more safe, and is object-oriented, so the following uses pdo as an example
<?php $driver='mysql'; //数据库类型 $host='localhost'; //数据库主机名 $db = 'sakila'; //数据库名称 $username='root'; //数据库连接用户名 $password=''; //数据库密码 $dsn="$driver:host=$host;dbname=$db"; try { $pdo= new PDO($dsn, $username, $password); //初始化一个PDO对象 $sql = "select * from actor"; $res = $pdo->query($sql); // 从actor中获取所有数据 foreach($res as $row) echo $row['first_name']."<br>"; } catch (PDOException $e) { die($e->getMessage()); }
functions that we usually write by ourselves, but the encapsulation class is just a little more advanced.
Basic ideaSo, how should we write it?First of all, when we need to simplify some code, we usually write some auxiliary functions by ourselves. For example, I personally have a bad habit and don’t like to use the
debugging function of the editor ( Voice-over: I use sublime text 3), so when debugging, I write it like this at the beginning.
$a = "is bug"; die(var_dump($a)); // 输出变量并且停止运行之后的代码 /***从xdebug得知bug出现在这一行,所以查看上一行的逻辑与数据 ***/
function dd($var) { die(var_dump($var)); }
function select($pdo, $table, $require, $where = []) { $w = []; // 将搜索条件转化为数据库命令能接受的格式 foreach ($where as $key => &$val) $w[] = "$key = '$val'"; // 有时候并不需要条件,仅仅将所有数据取出,因此$where默认为空 if(!empty($w)) $w = "where ".implode(', ', $w); else $w = ""; // 生成sql query $sql = "select $require from $table $w"; // 将已生成的query带入pdo实例 $res = $pdo->query($sql); // 返回结果 return $res->fetchAll(); }
select($pdo, 'actor', '*', ['first_name'=>'PENELOPE']) /** * 生成sql query => select * from actor where first_name = 'PENELOPE' **/
.php - Entry file, responsible for setting up the table, accepting the request, and returning the response
It’s roughly like this. If you can, give it a like or discuss it in the comment area below. Only feedback can push a lazy cancer patient to move forward.
The above is the detailed content of How to write your own database package (1). For more information, please follow other related articles on the PHP Chinese website!