#
读数据库
// 1.连接数据库,php是数据库名字
// var_dump($pdo);检测连接结果
// prepare 预处理sql语句的方法,生成处理对象
// -> 是类的访问符号,访问类里的方法或成员
// execute() 执行sql语句(读/写)
// print_r($data);
<?
try {
$pdo = new PDO('mysql:host=localhost;dbname=song','root','root');
} catch (\Throwable $th) {
echo '数据库连接失败' . $e->getMessage();
}
$pre = $pdo -> prepare('SELECT * FROM `user`');
$exe = $pre -> execute();
$data = $pre -> fetchAll();
?>
<table width="200" border="1">
<? foreach ($data as $key => $value) {
?>
<tr>
<td><?= $value['name'] ?></td>
<td><?=$value['add_time']?></td>
<td><?=$value['status']?></td>
</tr>
<? } ?>
</tr>
</table>
读数据库到指点变量
try{
$pdo = new PDO('mysql:host=127.0.0.1;dbname=song','root','root');
}catch(PDOException $e){
// 抛出错误,错误是你可以定义的
echo '数据库连接失败' . $e->getMessage();
}
$pre = $pdo -> prepare('SELECT * FROM `user`');
$exe = $pre -> execute();
// 把mysql读取出来的这一列数据,放到$name变量中
$pre -> bindColumn('name',$name);
$pre -> bindColumn('age',$age);
while ($pre->fetch(PDO::FETCH_ASSOC)){
echo '姓名:' . $name;
echo '年龄:' . $age;
echo '<hr>';
}
insert防止sql注入攻击
第一种写法,占位符 :
<?
$sql = 'INSERT INTO `user` SET `account`=:account, `password`=:password,`name`=:name,`phone`=:phone';
$pre = $pdo -> prepare($sql);
// bindParam 参数绑定
// 1. 站位符名
// 2. 要给值得变量,绑定上,现在可以没值
// 3. 常量,pdo预定义常量,可以设置这个值的类型 ,访问方式: PDO:: ,类里的常量访问方式
$pre -> bindParam ('account',$account, PDO::PARAM_STR);
$pre -> bindParam ('password',$password, PDO::PARAM_STR);
$pre -> bindParam ('name',$name, PDO::PARAM_STR);
$pre -> bindParam ('phone',$phone, PDO::PARAM_INT);
$account = 'xiaobian30';
$password = md5('123456');
$name = '小编30';
$phone = 1384382299;
$exe = $pre -> execute();
if(!$exe){
// 错误信息打印出来
print_r($pre->errorInfo());
}else{
// rowCount 获取是否成功。影响数量
echo '插入数量'.$pre -> rowCount();
echo '<hr>';
// lastInsertId 获取这次自增的ID,类是用连接的类$pdo
echo '最后插入ID'.$pdo -> lastInsertId();
}
?>
第二种写法 占位符?
<?
$sql = 'INSERT INTO `user` SET `account`=?, `password`=?,`name`=?,`phone`=?';
$pre = $pdo -> prepare($sql);
$pre -> bindParam (1,$account, PDO::PARAM_STR);
$pre -> bindParam (2,$password, PDO::PARAM_STR);
$pre -> bindParam (3,$name, PDO::PARAM_STR);
$pre -> bindParam (4,$phone, PDO::PARAM_STR);
$account = 'xiaobian30';
$password = md5('123456');
$name = '小编30';
$phone = 1384382299;
$exe = $pre -> execute();
if(!$exe){
// 错误信息打印出来
print_r($pre->errorInfo());
}else{
// rowCount 获取是否成功。影响数量
echo '插入数量'.$pre -> rowCount();
echo '<hr>';
// lastInsertId 获取这次自增的ID,类是用连接的类$pdo
echo '最后插入ID'.$pdo -> lastInsertId();
}
?>
第三种写法
//明文占位,数组传值
$sql = 'INSERT INTO `user` SET `account`=:account, `password`=:password,`name`=:name,`phone`=:phone';
$pre = $pdo -> prepare($sql);
$exe = $pre -> execute([
':account' => 'xiaobian33',
':password' => md5(123456),
':name' => '小编33',
':phone' => 13843812277
]);
if(!$exe){
// 错误信息打印出来
print_r($pre->errorInfo());
}else{
// rowCount 获取是否成功。影响数量
echo $pre -> rowCount();
echo '<hr>';
// lastInsertId 获取这次自增的ID,类是用连接的类$pdo
echo $pdo -> lastInsertId();
}
?>
数据库设置编码
<?
header ('content-type:text/html;charset=utf-8');
//new PDO('mysql:host=127.0.0.1;dbname=php','root','root', array(PDO::MYSQL_ATTR_INIT_COMAND => "SET NAMES 'utf-8'"));
try{
$pdo = new PDO('mysql:host=127.0.0.1;dbname=song','root','root');
}catch(PDOException $e){
// 抛出错误,错误是你可以定义的
echo '数据库连接失败' . $e->getMessage();
}
$pdo->query('SET NAMES utf8');
?>
数据库关闭PDO
- 方法一 $pdo = null;
- 方法二 unset($pdo);
类
class Teacher{
public $name;
public $age;
// 构造方法(人事部)
public function __construct($n,$age){
// $this 代表 本类(Teacher)
$this->name = $n;
// $this->age ===等于 public $age;
$this->age = $age;
// 它可以访问 本类里的 成员属性和成员方法
$this->jh();
}
public function jh(){
return '我是php中文网的老师';
}
public function code(){
return '我会写代码';
}
// 析构方法(人事部),离职的时候执行的
// 所有代码执行完以后,才执行,可以用做日志记录
public function __destruct(){
echo '我离职了';
}
}
// new 类的时候,就把成员变量的值传进去
$ouyang = new Teacher('欧阳克','38');
echo $ouyang->name;
echo '<hr>';
echo $ouyang->age;
echo '<hr>';
?>