为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
神不在的星期二 2021-04-28 18:29:24
我要做的就是从此函数获取名字的结果,但是感觉太多的代码无法基于会话ID进行。//query_functions.phpfunction 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.phpid = $_SESSION['admin_id'];$name = find_name_by_id($id);// what is the shortest way to get this $name result?
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

为了使用准备好的语句正确地执行此操作,实际上您需要的代码更多:

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,它将被抽象为一行代码。


实际上,对于所有情况,您都希望进行一些错误检查,不返回任何记录等。另外,您也应该避免使用全局变量,因为它们的格式很差。将您的代码放入类中,或者像我刚才那样使用依赖项注入。


查看完整回答
反对 回复 2021-05-21
  • 1 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信