批改状态:合格
老师批语:完成的很好,不过HTML中的foreach可以使用foreach的模板语法,这样更简洁。
extension=php_pdo_mysql.dll去掉前面的分号注释,然后重启Apache
<?php//定义数据库常量/*--------------------------------------------------------------------*///主机名define('DB_HOST','localhost');//用户名define('DB_USER','root');//密码define('DB_PWD','wang1111');//数据库名define('DB_NAME','tp5');//端口号define('DB_PORT','3306');//数据库类型define('DB_TYPE','mysql');//数据库的编码define('DB_CHARSET','utf8');//定义PDO的DSN,数据库源名,包括数据库类型、主机名、数据库名称和数据库编码。define('DB_DSN',DB_TYPE.":host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET);//PDO驱动程序的名称,后面为一个冒号,再后面是可选的驱动程序连接数据库变量信息,如主机名端口号和数据库名//$dsn = 'mysql:host=localhost,dbname=tp5';/*-------------------------------------------------------------------------*/

<?php//使用DPO进行mysql类的数据库连接require "config.php";try{//数据库连接,返回一个PDO对象$pdo = new PDO(DB_DSN,DB_USER,DB_PWD);//捕捉数据库信息的PDOEXCEPTION异常}catch(PDOException $e){echo $e->getMessage();//捕捉拥有Throwable接口的错误或者其他异常}catch(Throwable $e){echo $e->getMessage();}//更新数据$sql = "UPDATE `user` SET `username` = 'Flower' WHERE `age` = 32";//用exec()执行sql语句,不能执行带有结果集的sql语句,返回受影响的行数$res = $pdo->exec($sql);if($res == 0){//返回一个SQLSTATE码var_dump($pdo->errorcode());echo '<br>';//返回错误信息数组var_dump($pdo->errorInfo());}//查询数据$sql_S = "SELECT * FROM `user` ";//执行SQL语句,返回结果集用query()$stmt = $pdo->query($sql_S);//遍历集合foreach($stmt as $key => $value){echo '<br>';var_dump($value['username']);}

//1.使用问号参数占位符的SQL预处理语句$sql = "SELECT * FROM `user` WHERE `username` = ? AND `password` = ?";//用prepare()来执行sql语句并返回一个statement对象$stmt = $pdo->prepare($sql);//创建变量$username = "admin";$password = "123456";/* $username = "admin";$password = "123456";用bindParam()绑定一个参数到指定的变量$stmt->bindParam(1,$username);$stmt->bindParam(2,$password); *///用bindValue()绑定一个参数到指定的值$stmt->bindValue(1,'admin');$stmt->bindValue(2,'123456');//用execute()执行一条预处理语句$stmt->execute();//var_dump($stmt);//rowCount()返回受上一个sql语句影响的行数echo $stmt->rowCount();

//2.使用命名占位符的SQL预处理语句$sql = "SELECT * FROM `user` WHERE `username` =:username AND `password` =:password";//用prepare()来执行sql语句并返回一个statement对象$stmt = $pdo->prepare($sql);//创建变量/*$username = "admin";$password = "123456";用bindParam()绑定一个参数到指定的变量$stmt->bindParam(":username",$username);$stmt->bindParam(":password",$password);*///用bindValue()绑定一个参数到指定的值$stmt->bindValue(":username",'admin');$stmt->bindValue(":password",'123456');//用execute()执行一条预处理语句$stmt->execute();//var_dump($stmt);//rowCount()返回受上一个sql语句影响的行数echo $stmt->rowCount();

1.bingParm():绑定一个参数到变量;bindValue():绑定一个参数到值;
2.bindParm()绑定的变量可以在execute()执行语句之前用引用传值;bindValue()的值绑定之后就不会在改变
<?php//引入连接数据库的常量配置require "config.php";//连接数据库try{$pdo = new PDO(DB_DSN,DB_USER,DB_PWD);}catch(PDOException $e){echo $e->getMessage();}catch(Throwable $e){echo $e->getMessage();}//sql语句$sql = "SELECT * FROM `user`";//执行sql语句,用query()来执行,因为返回结果集$res = $pdo->query($sql);//把结果用关联数组来输出显示$res = $res->fetchAll(PDO::FETCH_ASSOC);?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>PDO遍历数据</title><style>body{display: flex;justify-content: center;}</style></head><body><table border="1px" cellspacing="0" cellpadding="10px"><tr><td>id</td><td>username</td><td>password</td><td>age</td></tr><?php foreach($res as $key => $value){ ?><tr><td><?php echo $value['id'] ?></td><td><?php echo $value['username'] ?></td><td><?php echo $value['password'] ?></td><td><?php echo $value['age'] ?></td></tr><?php } ?></table></body></html>

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号