h3

php高级进阶系列文章--第三篇(PHP操作mysql基础知识复习)

上一篇复习了php的基础知识,这一节主要复习Mysql的基础知识,同样,本文章对于很简单的内容就不在阐述了

1,连接数据库,mysql已经抛弃,不再考虑,可以使用mysqli,或者pdo

<?php 

// 面向对象方式mysqli方式连接数据库
$servername = "localhost";
$username = "root";
$password = "root";

// 创建连接
$conn = new mysqli($servername, $username, $password);
if ($conn->connect_error) {
    die("连接失败".$conn->connect_error);
} else {
    echo '连接成功';
}

// 面向过程方式连接数据库
$conn = new mysqli($servername, $username, $password);
if (!$conn) {
    die("连接失败".mysqli_connect_error());
} else {
    echo '连接成功';
}

// pdo 方式连接数据库
try{
    $conn = new pdo("mysql:host=$servername;dbname=test",$username,$password);
    echo '连接成功';
}catch(PDOException $e){
    echo $e->getMessage();
}
mysqli和pdo连接库实例

2,创建数据库,分别使用mysqli方式和pdo方式

<?php 

// 面向对象方式mysqli方式连接数据库
$host = "localhost";
$username = "root";
$password = "root";

// mysqli创建连接
$conn = new mysqli($host, $username, $password);
if ($conn->connect_error) {
    die('连接错误:'.$conn->connect_error);
}
$sql = "create database xuexi";
if ($conn->query($sql) === TRUE) {
    echo 'success';
} else {
    echo $conn->error;
}

// PDO 创建数据库
try{
    $conn = new pdo("mysql:host=$host; dbname=xuexi",$username,$password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "create database myDBPDO";
    $conn->exec($sql);
    echo 'success';
} catch (PDOException $e) {
    echo $sql, "<br />" . $e->getMessage();
}
$conn = null;
mysqli和pdo创建数据库实例

3,mysqli和pdo的预处理语句方式新增数据

<?php
/**
 * 预处理语句优点
 * 格式:INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
 * 工作原理:预处理:创建SQL语句模板同时发送到数据库,预留的值使用参数?标记
 *           数据库解析,编译,对sql语句进行查询优化,并存储结果
 *           执行,将应用绑定的值传递给参数,数据库执行语句,应用可以多次执行语句
 * 预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)
 * 绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句
 * 预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性
 */

$host = "localhost";
$username = "root";
$password = "root";
$dbname = "xuexi";

$conn = new mysqli($host, $username, $password, $dbname);

if ($conn->connect_error) {
    die("连接失败:".$conn->connect_error);
}

// 预处理及绑定
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param('sss', $firstname, $lastname, $email);
// 此处的sss表示是三个参数都是字符串型的 i - integer(整型) d - double(双精度浮点型) s - string(字符串) b - BLOB(binary large object:二进制大对象)



# 设置并执行参数
$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute();

$firstname = "Mary";
$lastname = "Moe";
$email = "mary@example.com";
$stmt->execute();

echo "新记录插入成功";

$stmt->close();
$conn->close();

// pdo方式预处理
try {
    $conn = new pdo("mysql:host = $host; dbname = $dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) 
        VALUES (:firstname, :lastname, :email)");
    $stmt->bindParam(':firstname', $firstname);
    $stmt->bindParam(':lastname', $lastname);
    $stmt->bindParam(':email', $email);
    // 插入行
    $firstname = "John";
    $lastname = "Doe";
    $email = "john@example.com";
    $stmt->execute();
} catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;
预处理示例

暂时先将php操作数据库的基础内容写到这儿,后续会有单独章节分别讲mysqli和pdo这两种操作数据库的形式,主要是pdo的操作方式。

接下来是mysql的基础知识

posted @ 2017-07-26 13:43  码上平天下  阅读(433)  评论(0编辑  收藏  举报