gpt4 book ai didi

php - 返回单个数据库结果的正确方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 08:23:27 24 4
gpt4 key购买 nike

我想做的就是从此函数中获取名字结果,但感觉基于 session ID 执行此操作的代码太多了。

//query_functions.php

function find_name_by_id($id) {
global $db;

$sql = "SELECT firstname FROM admins ";
$sql .= "WHERE id='" . db_escape($db, $id) . "' ";
$sql .= "LIMIT 1";
$result = mysqli_query($db, $sql);
confirm_result_set($result);
$name = mysqli_fetch_assoc($result); // find first
mysqli_free_result($result);
return $name; // returns an assoc. array
}

// admin.php

id = $_SESSION['admin_id'];
$name = find_name_by_id($id);

// what is the shortest way to get this $name result?

最佳答案

要使用 prepared statements 正确执行此操作你实际上需要比这更多的代码:

function find_name_by_id($db, $id) {
$stmt = $db->prepare("SELECT firstname FROM admins WHERE id=?");
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
$stmt->free_result();
return $row[0];
}

我不确定 confirm_result_set 是什么,所以我把它漏掉了。

假设 $db 是一个 PDO 对象:

function find_name_by_id($db, $id) {
$stmt = $db->prepare("SELECT firstname FROM admins WHERE id=?");
$stmt->execute([$id]);
return $stmt->fetchColumn();
}

涉及的代码少得多。对于更高级别的 API,这将被抽象为一行代码。

实际上,对于所有情况,您都希望进行一些错误检查,说明没有返回任何记录等。您还应该避免使用全局变量,它们的形式非常糟糕。将您的代码放入一个类中,或者像我一样使用依赖注入(inject)。

关于php - 返回单个数据库结果的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55873901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com