微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我想做的就是从此函数获取名字的结果,但是感觉太多的代码无法基于会话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,它将被抽象为一行代码.

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

原文地址:https://www.jb51.cc/mysql/531944.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐