PHP MySQL 数据库操作代码优化建议
以下是对 PHP 代码的优化建议:
- 在函数内部使用了全局变量 '$error',并用 '&' 引用传递。这种写法不太规范,建议将 '$error' 定义为函数的返回值。
function connect($username, $password, $dbname, $host='localhost', $port='3306', $charset='utf8') {
$conn = @mysqli_connect($host, $username, $password, $dbname, $port);
if (!$conn) {
return ['error' => iconv('gbk', 'utf-8', mysqli_connect_error()), 'conn' => false];
}
if (!mysqli_set_charset($conn, $charset)) {
return ['error' => mysqli_error($conn), 'conn' => $conn];
}
return ['error' => null, 'conn' => $conn];
}
function execute($conn, $sql) {
$res = mysqli_query($conn, $sql);
if (!$res) {
return ['error' => mysqli_error($conn), 'res' => false];
}
return ['error' => null, 'res' => $res];
}
function read($conn, $sql, $all = false) {
$res = execute($conn, $sql)['res'];
if (!$res) {
return ['error' => execute($conn, $sql)['error'], 'data' => false];
}
if ($all) {
$lists = [];
while ($one = mysqli_fetch_assoc($res)) {
$lists[] = $one;
}
return ['error' => null, 'data' => $lists];
} else {
return ['error' => null, 'data' => mysqli_fetch_assoc($res)];
}
}
function write($conn, $sql, $insert = false) {
$res = execute($conn, $sql)['res'];
if (!$res) {
return ['error' => execute($conn, $sql)['error'], 'result' => false];
}
if ($insert) {
return ['error' => null, 'result' => mysqli_insert_id($conn)];
} else {
return ['error' => null, 'result' => mysqli_affected_rows($conn)];
}
}
-
在
read()函数中,判断$all的值后,只返回了一条结果,应该将return $lists;移到循环外部,以返回全部结果。 -
在
write()函数中,判断$insert的值后,应该分别返回mysqli_insert_id($conn)和mysqli_affected_rows($conn),而不是使用if-else语句返回。
此外,还可以将函数的返回值设计为数组,包含错误信息和操作结果,以便更加方便地进行错误处理和结果获取。
优化后的代码示例:
// 连接数据库
$conn = connect('root', 'root', 'stu')['conn'];
if (!$conn) {
die(connect('root', 'root', 'stu')['error']);
}
// 执行 SQL 语句
$res = execute($conn, 'select * from shenzhou')['res'];
if (!$res) {
die(execute($conn, 'select * from shenzhou')['error']);
}
// 读取数据
$list = read($conn, 'select * from shenzhou', true)['data'];
var_dump($list);
// 写入数据
$result = write($conn, 'update shenzhou set age=age+1 limit 3')['result'];
echo $result;
通过以上优化,代码更加规范、易于维护,也更加易于阅读和理解。
原文地址: https://www.cveoy.top/t/topic/ovPw 著作权归作者所有。请勿转载和采集!