哎,身为一个穷逼,以前自学在网上找的好几年前的视频,学的mysql,可惜现在已经不适用了,现在更新一下基础知识,本节介绍一个同mysqli中的面向对象和面向过程以及PDO预处理的格式,下一节做一下后台数据显示页面以便复习一下知识点,ok,就这样,至于概念什么的,请自行百度
<?php$servername = '127.0.0.1';$username = 'root';$password = 'weicunbin123';$dbname = 'testguest';// 创建连接$conn = new mysqli($servername, $username, $password, $dbname);// 检测连接if ($conn->connect_error) {die("连接失败: " . $conn->connect_error);}$conn->set_charset( "utf8" ); // 设置字符集// 预处理语句,每刷新一次数据库sql语句执行一次// 增// 给数据库准备预处理语句,(sql语句,原本需要的文字用 ‘?’ 表示)$stmt = $conn->prepare("INSERT INTO tg_message (tg_touser,tg_centent) VALUES (? , ?)");//绑定参数,第一个为类型,其他的与? 一一对应$stmt->bind_param("ss", $param1,$param2);/** bind_param第一个参数* i 整型integer* d 双精度浮点型double* s 字符串string* b 是一个blob和将发送数据包*/// 设置参数并执行$param1 = 'value1';$param2 = 'value2';// 执行$stmt->execute();echo "增:最后ID:".$stmt->insert_id."<br>";echo "增:影响行数:".$stmt->affected_rows."<br>";// 删$stmt = $conn -> prepare("DELETE FROM tg_message WHERE tg_id = ?");$stmt -> bind_param('i', $param);$param = 1;$stmt -> execute();echo "删:影响行数:".$stmt->affected_rows."<br>";// 改$stmt = $conn -> prepare("UPDATE tg_message SET tg_touser = ? WHERE tg_id = ?");$stmt -> bind_param('si', $centent,$id);$centent = '这是修改后的文字';$id = 9;$stmt -> execute();echo "改:影响行数:".$stmt->affected_rows."<br>";// 查$stmt = $conn -> prepare("SELECT tg_id,tg_touser FROM tg_message WHERE tg_id > ?");$stmt -> bind_param('i',$num);$num = 15;$stmt -> execute();echo "查:记录总数:".$stmt->num_rows;// 显示搜索到的结果$stmt -> bind_result ( $tg_id,$tg_touser );//这里参数跟你查询的字段显示个数需要对应起来!while ( $stmt -> fetch ()) {echo $tg_id .'=>'. $tg_touser .'<br>';}// 销毁结果集$stmt->free_result();$stmt->close();$conn->close();?>
<?php/** @Descripttion:* @version:* @Author: wei* @Date: 2020-04-05 12:23:50* @LastEditors: wei* @LastEditTime: 2020-04-05 14:35:00*/$dbms='mysql'; //数据库类型$host='localhost'; //数据库主机名$dbName='testguest'; //使用的数据库$user='root'; //数据库连接用户名$pass='weicunbin123'; //对应的密码$dsn="$dbms:host=$host;dbname=$dbName";// 连接数据库try {$pdo = new PDO($dsn, $user, $pass); //初始化一个PDO对象echo "连接成功<br/>";} catch (PDOException $e) {die ("Error!: " . $e->getMessage() . "<br/>");}$pdo->exec("set names utf8"); //设置字符集// PDO 增,用几种方式实现,其余的可以借鉴一下添加操作1.1$stmt = $pdo->prepare("INSERT INTO tg_message (tg_touser,tg_fromuser) VALUES ( :touser,:fromuser)");$stmt->bindParam(":touser", $param1, PDO::PARAM_STR); //第三个参数不加也没有影响$stmt->bindParam(":fromuser", $param2);$param1 = 'touser';$param2 = 'fromuser';$stmt->execute();echo "增:影响行数:".$stmt->rowCount();//影响行数echo "增:最后ID:".$pdo->lastInsertId();//自增idecho '<br>';//1.2$stmt = $pdo->prepare("INSERT INTO tg_message (tg_touser,tg_fromuser) VALUES ( :touser,:fromuser)");$stmt->execute(array(':touser' => 'a',':fromuser'=>'b'));echo "增:影响行数:".$stmt->rowCount();//影响行数echo "增:最后ID:".$pdo->lastInsertId();//自增idecho '<br>';//2.1$stmt = $pdo->prepare("INSERT INTO tg_message (tg_touser,tg_fromuser) VALUES ( ? , ?)");$stmt->bindParam(1, $param1);$stmt->bindParam(2, $param2);$param1 = 1;$param2 = 'fromuser';$stmt->execute();echo "增:影响行数:".$stmt->rowCount();//影响行数echo "增:最后ID:".$pdo->lastInsertId();//自增idecho '<br>';//2.2$stmt = $pdo->prepare("INSERT INTO tg_message (tg_touser,tg_fromuser) VALUES ( ? , ?)");$stmt->execute(array('touser','fromuser'));echo "增:影响行数:".$stmt->rowCount();//影响行数echo "增:最后ID:".$pdo->lastInsertId();//自增idecho '<br>';// 3,批量添加echo "批量添加";$stmt = $pdo->prepare("INSERT INTO tg_message (tg_touser,tg_fromuser) VALUES ( ? , ?)");$arr = array(array('1','1'),array('2','2'));foreach ($arr as $val) {$stmt->execute( $val );echo '<br>';echo "增:影响行数:".$stmt->rowCount();//影响行数echo "增:最后ID:".$pdo->lastInsertId();//自增id}// PDO 删$stmt = $pdo -> prepare("DELETE FROM tg_message WHERE tg_id = ?");$stmt->execute(array(30));echo "删:影响行数:".$stmt->rowCount();//影响行数echo '<br>';// PDO 改$stmt = $pdo -> prepare("UPDATE tg_message SET tg_touser = ? WHERE tg_id = ?");$stmt->execute(array('newname','2'));echo "改:影响行数:".$stmt->rowCount();//影响行数echo '<br>';// PDO 查$stmt = $pdo -> prepare("SELECT tg_id,tg_touser FROM tg_message WHERE tg_id > ?");$stmt->execute(array(6));echo "查:影响行数:".$stmt->rowCount();//影响行数echo '<br>';echo '显示搜索到的结果:';while($result=$stmt->fetch(PDO::FETCH_ASSOC)){var_dump($result);echo '<br>';}?>
相同:
准备预处理语句相同 => 都是数据库对象 -> prepare
$pdo->prepare
$conn->prepare
不同:
设置字符集
mysqli
$conn->set_charset( “utf8” ); // 设置字符集
PDO
$pdo->exec(“set names utf8”); //设置字符集
绑定参数写法不同用法不同,这里只介绍写法
mysqli
$stmt->bind_param(“ss”, $param1,$param2);
PDO
$stmt->bindParam(“:touser”, $param1, PDO::PARAM_STR); //第三个参数不加也没有影响
获得影响行数有所不同
mysqli
$stmt - > affected_rows
$stmt - > num_rows
PDO
$stmt - > rowCount();//增删改查都使用这一个就行,注意有括号
获得 最后插入行的ID或序列值 不同
mysqli
$stmt->insert_id
PDO
$pdo->lastInsertId()
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号