附一个简化的操作版本
代码
```$xslt
<?php
// 1.连接数据库,创建PDO对象
$pdo = new PDO(‘mysql:host=localhost;dbname=php’,’root’,’root’);
//2.准备SQL语句,创建预处理对象
$sql = ‘INSERT INTO staff (name,age, sex, position, mobile, hiredate) ‘;
//sql较长的情况下,可以拼接,如下
$sql .= ‘ VALUES (:name, :age, :sex, :position, :mobile, :hiredate)’;
$stmt = $pdo->prepare($sql);
//3. 参数绑定,执行SQL语句
$name = ‘春丽’;
$age = 18;
$sex = 1;
$position = ‘游戏角色’;
$mobile = ‘18987654321’;
$hiredate = time();
//绑定到SQL语句占位符上
$stmt->bindParam(‘name’,$name,PDO::PARAM_STR, 20);
$stmt->bindParam(‘age’, $age, PDO::PARAM_INT);
$stmt->bindParam(‘sex’, $sex, PDO::PARAM_INT);
$stmt->bindParam(‘position’, $position, PDO::PARAM_STR, 20);
$stmt->bindParam(‘mobile’, $mobile, PDO::PARAM_STR, 11);
$stmt->bindParam(‘hiredate’, $hiredate, PDO::PARAM_INT);
//执行sql语句
$stmt->execute();
//简化方法:因为有6个参数,逐一绑定太麻烦,我们通过数组来简单这一操作
// 创建二个数组分别保存参数的键和值
$key = [‘name’, ‘age’, ‘sex’, ‘position’, ‘mobile’, ‘hiredate’];
$value = [‘蓝玉’,45,1,’明朝名将’,’18929999992’,time()];
//// array_combine()将键数组与值数组合并成新数组
$data = array_combine($key,$value);
//执行execute(),参数为数组,默认全部字符类型
$stmt->execute($data);
//4. 对执行结果进行处理,对返回受影响的记录数量进行判定
if($stmt->rowCount()>0){
echo ‘添加了’. $stmt->rowCount() . ‘条记录’;
}
//5. 断开连接
$pdo = null;
### 更新操作* 无论新增、更新或者删除,操作数据库的开始步骤都是一样的,更新操作无非就是重新编辑了SQL为更新操作* 附更新操作的简便方法> 代码```$xslt<?php// 1.连接数据库,创建PDO对象$pdo = new PDO('mysql:host=localhost;dbname=php','root','root');//2.准备SQL语句,创建预处理对象$sql = 'UPDATE `staff` SET `position` = :position WHERE `id` = :id ';$stmt = $pdo->prepare($sql);//3. 参数绑定,绑定到SQL语句占位符上,执行SQL语句$stmt->bindValue('position','天文台', PDO::PARAM_STR);$stmt->bindValue('id', 7, PDO::PARAM_INT);//执行sql语句$stmt->execute();//简化的操作$stmt->execute(['position'=>'科学馆', 'id'=>6]);//4. 对执行结果进行处理,对返回受影响的记录数量进行判定if($stmt->rowCount()>0){echo '更新了'. $stmt->rowCount() . '条记录';}else {echo '没有更新记录';}//5. 断开连接$pdo = null;
代码
```$xslt
<?php
// 1.连接数据库,创建PDO对象
$pdo = new PDO(‘mysql:host=localhost;dbname=php’,’root’,’root’);
//2.准备SQL语句,创建预处理对象
$sql = ‘DELETE FROM staff WHERE id = :id ‘;
$stmt = $pdo->prepare($sql);
//3.执行sql语句
// 添加检测机制,让代码更加的健壮
if ($stmt->execute([‘id’=>10])) {
// 4. 处理执行结果
if ($stmt->rowCount() > 0) {
echo ‘成功删除了’ . $stmt->rowCount() . ‘条记录’;
} else {
echo ‘没有记录被删除’;
}
} else {
echo print_r($stmt->errorInfo(),true);
}
// 4. 断开连接
$pdo = null;
* 2、独立完成员工管理系统中的用户更新操作, 体会Ajax在前后端交互的作用* Ajax 使用异步的方式调用,更加友好的给用户体验+ Ajax 练习,使用Ajax 完成GET请求、POST请求+ 1.创建Ajax对象+ 2.创建请求事件的回调,获取响应数据,执行DOM操作+ 3.创建URL请求+ 4.发送URL请求+get请求的url地址,可以带参数,用&分割,也可以不带参数> 代码
//user_edit.php代码
<?php
//echo $_GET[‘id’];
$id = intval(trim($_GET[‘id’]));
$pdo = new PDO(‘mysql:dbname=php’, ‘root’, ‘root’);
$stmt = $pdo->prepare(“SELECT * FROM user WHERE id={$id}”);
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);
//print_r($user);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户编辑</title>
<style>
h3 {
text-align: center;
}
div {width: 300px;height: 180px;/*background-color: lightblue;*/margin: 0 auto;text-align: center;padding: 20px;border: 1px dashed #888;border-radius: 5%;}div input {border: none;border-bottom: 1px solid #333;}button:hover {cursor: pointer;background-color: lightblue;}.success {color: green;}.error {color: red;}</style>
</head>
<body>
<h3>用户编辑</h3>
<div>
<form name="user">
<p>
<label>用户名:
<input type="text" name="name" value="<?=$user['name']?>" disabled>
</label>
</p>
<p>
<label>邮 箱:
<input type="email" id="email" name="email" value="<?=$user['email']?>" autofocus>
</label>
</p>
<p>
<label>密 码:
<input type="password" id="password" name="password" value="<?=$user['password']?>">
</label>
</p>
<!-- 将当前用户的id,做为更新条件,以隐藏域的方式发送到服务器端-->
<input type="hidden" id="id" value="<?=$user['id']?>">
<p>
<button type="button" onclick="save(this.form)">保存</button>
<button type="button" onclick="history.back()">取消</button>
</p>
<!-- 提示信息占位符-->
<p></p>
</form>
</div>
<script>
function save(form) {
// var user = document.getElementsByTagName(‘form’).namedItem(‘user’);
//ajax提交//console.log(form);var request = new XMLHttpRequest();request.onreadystatechange = function () {console.log(request.responseText);if (request.readyState === 4 && request.status === 200) {var data = JSON.parse(request.responseText);//console.log(data);// 获取提示信息占位元素var tips = form.lastElementChild;//console.log(tips);tips.innerText = data.message;// 根据返回的状态,添加适当的class样式if (data.status === 1) {tips.classList.add('success');}// 没有更新或更新错误采用同一个样式else {tips.classList.add('error');}// 2秒后跳转到上一个页面,即用户列表页setTimeout(function (){history.back();},2000);}};request.open('POST','user_manage.php?action=save');request.setRequestHeader('content-type','application/x-www-form-urlencoded');request.send('email='+form.email.value+'&password='+form.password.value+'&id='+form.id.value);}
</script>
</body>
</html>
//user_manage.php 代码
<?php
error_reporting(E_ALL ^ E_WARNING);
$pdo = new PDO(‘mysql:dbname=php’, ‘root’, ‘root’);
//print_r($_POST);
$action = $_GET[‘action’];
$action = strtolower(trim($action));
switch ($action) {
case ‘save’ :
$sql = ‘UPDATE user SET email=:email, password=:password WHERE id=:id’;
$stmt = $pdo->prepare($sql);
$email = strtolower(trim($_POST['email']));$password = sha1(strtolower(trim($_POST['password'])));$id = strtolower(trim($_POST['id']));$stmt->bindParam('email',$email, PDO::PARAM_STR,60);$stmt->bindParam('password',$password, PDO::PARAM_STR,20);$stmt->bindParam('id',$id, PDO::PARAM_INT);if($stmt->execute()) {if($stmt->rowCount() == 1){$status = 1;$message = '更新成功';} else if ($stmt->rowCount() == 0) {$status = 0;$message = '信息没有更新';}}else {$status = -1;$message = '保存失败,请检查';}echo json_encode(['status'=>$status, 'message'=>$message]);break;
}
* 3、查询js手册, 对json数据格式做一个了解* JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。+ JSON 函数 函数描述 json_encode 对变量进行 JSON 编码 json_decode对 JSON 格式的字符串进行解码,转换为 PHP 变量 json_last_error 返回最后发生的错误 json_encode PHP json_encod* 4、对今晚提到的php函数, 查询手册, 了解它的参数,用途* 本节课程涉及到的主要是数据库操作函数,下面分别对这些函数进行了解* PDO 函数* 如果你的项目需要在多种数据库中切换,建议使用 PDO ,这样你只需要修改连接字符串和部门查询语句即可。 使用 MySQLi, 如果不同数据库,你需要重新编写所有代码,包括查询。两者都是面向对象, 但 MySQLi 还提供了 API 接口。* PHP PDO PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。 PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用,无法运行于之前的PHP版本。 PDO 安装 你可以通过 PHP 的 phpinfo() 函数来查看是否安装了PDO扩展。```angular2<?php$dbms='mysql'; //数据库类型$host='localhost'; //数据库主机名$dbName='test'; //使用的数据库$user='root'; //数据库连接用户名$pass=''; //对应的密码$dsn="$dbms:host=$host;dbname=$dbName";try {$dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象echo "连接成功<br/>";/*你还可以进行一次搜索操作foreach ($dbh->query('SELECT * from FOO') as $row) {print_r($row); //你可以用 echo($GLOBAL); 来看到这些值}*/$dbh = null;} catch (PDOException $e) {die ("Error!: " . $e->getMessage() . "<br/>");}//默认这个不是长连接,如果需要数据库长连接,需要最后加一个参数:array(PDO::ATTR_PERSISTENT => true) 变成这样:$db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));?>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号