pdo mysql 增删_PDO连接MySQL数据库,以及增删改查的操作方法 180830课后作业

本次作业主要包含PDO(php data object)连接MySQL数据库,以及相关数据的增、删、改、查操作

实例1数据库连接以及新增数据

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');//连接数据库并返回pdo对象

/*$sql = "INSERT `user` SET `user_name`= :user_name , `email`= :email, `password`= sha1(:password);";//准备新增数据sql语句,并且使用命名占位符:name(mysqli中使用的是?占位符)

$stmt = $pdo -> prepare($sql);//创建预处理对象

$data = ['user_name'=>'Sul666','email'=>'sy@qq.com','password'=>888];//设置参数

$stmt -> bindParam(':user_name',$data['user_name'],PDO::PARAM_STR);

$stmt -> bindParam(':email',$data['email'],PDO::PARAM_STR);

$stmt -> bindParam(':password',$data['password'],PDO::PARAM_STR);

if ($stmt->execute()){//执行语句

echo '

成功添加了'.$stmt->rowCount().'条记录

';//rowCount(): 返回受影响的记录数量

} else {

echo '

添加失败

';

print_r($stmt->errorInfo());//返回的错误信息是一个数组

exit();

}*/

//优化写法

$stmt = $pdo -> prepare("INSERT `user` SET `user_name`= :user_name , `email`= :email, `password`= sha1(:password);");//创建预处理对象

$stmt->execute(['user_name'=>'Sul111','email'=>'sy1@qq.com','password'=>888]);

$stmt->execute(['user_name'=>'Sul222','email'=>'sy2@qq.com','password'=>888]);

$stmt->execute(['user_name'=>'Sul333','email'=>'sy3@qq.com','password'=>888]);

$stmt->execute(['user_name'=>'Sul444','email'=>'sy4@qq.com','password'=>888]);

$stmt->execute(['user_name'=>'Sul555','email'=>'sy5@qq.com','password'=>888]);

$stmt->execute(['user_name'=>'Sul777','email'=>'sy7@qq.com','password'=>888]);

echo '

成功添加了'.$stmt->rowCount().'条记录

';//rowCount(): 返回受影响的记录数量

$stmt = null;//关闭预处理对象

$pdo = null;//关闭连接

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例2更新数据

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');//连接数据库并返回pdo对象

$stmt = $pdo->prepare("UPDATE `user` SET `email`= :email WHERE `id`= :id");//创建预处理对象

$stmt->execute(['email'=>'suyh666@qq.com','id'=>9]);//执行更新语句

$stmt->execute(['email'=>'suyh555@qq.com','id'=>8]);//执行更新语句

$stmt->execute(['email'=>'suyh444@qq.com','id'=>7]);//执行更新语句

$stmt->execute(['email'=>'suyh333@qq.com','id'=>6]);//执行更新语句

$stmt->execute(['email'=>'suyh222@qq.com','id'=>5]);//执行更新语句

echo '

成功更新了'.$stmt->rowCount().'条记录

';//返回记录值

$stmt = null;//注销预处理对象

$pdo = null;//关闭连接

//UPDATE '表' SET `字段`= :name WHERE `id`= :id;//更新语句

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例3删除数据

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');//连接数据库并返回pdo对象

$stmt = $pdo->prepare("DELETE FROM `user` WHERE `id`= :id");//创建预处理对象

$stmt -> execute(['id'=> 9]);

$stmt -> execute(['id'=> 8]);

$stmt -> execute(['id'=> 7]);

$stmt -> execute(['id'=> 6]);

echo '

成功删除了'.$stmt->rowCount().'条记录

';//以上方法执行多条时返回记录值也为1

$stmt = null;//注销预处理对象

$pdo = null;//关闭连接

//DELETE FROM '表' WHERE `id`= :id;//删除语句

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例4数据查询及返回值

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');//连接数据库并返回pdo对象

$stmt = $pdo->prepare("SELECT `user_name`,`email` FROM `user` WHERE `id`

$stmt -> execute(['id' => 4]);

while ($rows = $stmt ->fetch(PDO::FETCH_ASSOC)){//PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组

echo var_export($rows),'
';//输出id<4的循环结果

}

//以下内容需要了解:

// 一次性取出fetchAll()

//$rows = $stmt->fetchAll();

//foreach ($rows as $row) {//遍历所有数组,弊端没有条件限制全部输出

//    echo 'name: ',$row['name'],',   email: ',$row['email'],'
';

//}

//fetchColumu()从结果集中的下一行返回单独的一列

//echo $stmt->fetchColumn(0),'
';//获取一行一列,无法获取同一行其它列

//echo $stmt->fetchColumn(1),'
';//指针自动下移,获取二行2列

/*$stmt = $pdo->prepare("select count(*) from staff where salary > :salary");//创建预处理对象,查询表staff,查询条件 salary,

$stmt->execute(['salary'=>4000]);//执行查询 条件salary大于4000

echo '工资大于4000的人数: '. $stmt->fetchColumn();//获取结果集记录数量的方法:通过以上count()查询符合条件的数量然后通过fetchCloumn()返回行数即可*/

/*//将结果集中的列绑定到变量上

// bindColumn()绑定一列到一个 PHP 变量(数组)

//$stmt->bindColumn('user_name', $user_name);

//$stmt->bindColumn('email', $email);

//用列的变量来遍历结果集

while ($stmt->fetch(PDO::FETCH_BOUND)) {//返回 TRUE ,并分配结果集中的列值给 PDOStatement::bindColumn() 方法绑定的 PHP 变量。

echo '姓名: ',$user_name, ',  邮箱: ', $email, '
';

}

以上注释内容均已测试体验理解*/

运行实例 »

点击 "运行实例" 按钮查看在线实例

手抄:

99d27cc9100364f78c01f3408396a302.png

问答:获取结果集记录数量的正确方式是什么?

答:rowCount主要针对写的操作(新增、删除、更新),返回结果值记录数量使用fetchColumn(),在准备查询语句时,用count()计算出查询的条数,通过fetchColumn()返回最后一行输出数值(ftchColumn()指针自动下移)。

总结:

1在连接MySQL数据库上和进行增删改查等操作的结构顺序上和mysqli类似,但是PDO使用时更为直接明了

2sql语句上的占位符使用  :命名

3绑定参数简化操作直接将参数写入execute()括号中

4写操作类(新增、更新、删除)的返回值用rowCount()(表示受影响的记录数量);查询操作根据条件在sql查询语句中使用count()计算一下查询条数,返回值用fetchColumn()

5bindColumn()绑定一列到一个 PHP 变量(数组);fetchColumu()从结果集中的下一行返回单独的一列;PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组;PDO::FETCH_BOUND)) 返回 TRUE ,并分配结果集列值给 PDOStatement::bindColumn() 方法绑定的 PHP 变量。

6学习过mysqli的操作方法PDO的数据库连接以及增删改查操作相对容易理解,但PDO类及PDOStatement 类需要多看多背多尝试,才能理解更深刻

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PDO 是一种 PHP 数据库操作扩展,支持多种数据库,包括 MySQL。下面是 PDO MySQL增删基本语句示例: 1. 插入数据 ```php // 建立连接 $dsn = 'mysql:host=localhost;dbname=test'; $username = 'username'; $password = 'password'; $pdo = new PDO($dsn, $username, $password); // 插入数据 $sql = "INSERT INTO users (name, email, password) VALUES (:name, :email, :password)"; $stmt = $pdo->prepare($sql); $stmt->execute(array( ':name' => 'Tom', ':email' => '[email protected]', ':password' => '123456' )); ``` 2. 询数据 ```php // 建立连接 $dsn = 'mysql:host=localhost;dbname=test'; $username = 'username'; $password = 'password'; $pdo = new PDO($dsn, $username, $password); // 询数据 $sql = "SELECT * FROM users WHERE id = :id"; $stmt = $pdo->prepare($sql); $stmt->execute(array(':id' => 1)); $result = $stmt->fetch(PDO::FETCH_ASSOC); print_r($result); ``` 3. 更新数据 ```php // 建立连接 $dsn = 'mysql:host=localhost;dbname=test'; $username = 'username'; $password = 'password'; $pdo = new PDO($dsn, $username, $password); // 更新数据 $sql = "UPDATE users SET name = :name WHERE id = :id"; $stmt = $pdo->prepare($sql); $stmt->execute(array( ':id' => 1, ':name' => 'Jerry' )); ``` 4. 删除数据 ```php // 建立连接 $dsn = 'mysql:host=localhost;dbname=test'; $username = 'username'; $password = 'password'; $pdo = new PDO($dsn, $username, $password); // 删除数据 $sql = "DELETE FROM users WHERE id = :id"; $stmt = $pdo->prepare($sql); $stmt->execute(array(':id' => 1)); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值