更新记录的sql指令:
UPDATE `student` SET `name`='李四',`age`=21 WHERE `no`='1831001'
在db类中,更新记录的方法update,最终要实现的是将传递过来的数据构建成以上的sql指令。
以下是db类中的update方法
/**
* 更新记录
* @param $table 表名
* @param $data 数据, 数据类型:字符串、关联数组
* @param $where 更新条件,数据类型:关联数组
*/
function update($table, $data, $where = '1=1')
{
if (!is_array($data)) {
die('第二个参数必须是数组');
}
$values = '';
foreach ($data as $k => $v) {
$values .= "{$k}='{$v}',";
}
$values = rtrim($values, ',');
$condition = '';
if (is_array($where)) {
foreach ($where as $k => $v) {
$condition .= " {$k}='{$v}' and";
}
$condition = substr($condition, 0, -3);
} else {
$condition = $where;
}
$sql = "update {$table} set {$values} where {$condition}";
$ret = mysqli_query($this->conn,$sql);
return $ret;
}
构建update方法比add方法稍微困难些,因为这里多了更新条件语句。第三个参数$where带有默认值,也就是说调用该方法时可以不用传递第三个参数,以下是调用 代码。
<?php
/**
* 测试文件 test.php
*/
require_once "Db.class.php";
$db = new Db("myschool",'root','');
//传递三个参数
$ret = $db->update('student',['name'=>'李四','age'=>20],['no'=>'1002','sex'=>'男']);
var_dump($ret);
//传递两个参数
$ret = $db->update('student',['age'=>18]);
var_dump($ret);