gpt4 book ai didi

php - PDO 替代 mysql_ 获取字段信息

转载 作者:行者123 更新时间:2023-11-28 23:59:57 24 4
gpt4 key购买 nike

当我学习 php 时,我从显然较旧的指南中学习并且一直在使用 mysql_ 函数。我正在将所有内容切换到 PDO,我有一个我真的想保留的功能,但我不太清楚如何更改它。这是 mysql_ 函数。

function getfield($field){
$query = "SELECT $field FROM users WHERE id='".$_SESSION['user_id']."'";
if($query_run = mysql_query($query)){
if ($query_result = mysql_result($query_run, 0, $field)){
return $query_result;
}
}

}

从这里我可以获得我想要的任何字段。然而,它使用的是 mysql_ 东西,我听说它已被弃用,很快就会被淘汰。此函数从您登录时获取 session ID,然后使用此 session 信息收集来自该用户的所有信息。

最佳答案

这是使用 PDO 的函数的快速示例。我在代码中留下了一些注释以帮助您理解这个想法。

function getField($field) {
// Assuming you already obtained your connection here.
// For the purpose of showing you an example I will name my database connection with variable $db

// First check if we have user_id in our session, and then sanitize it.
// never query the database with unsanitized data.
$userId = isset($_SESSION['user_id']) ? filter_var($_SESSION['user_id'], FILTER_SANITIZE_NUMBER_INT) : null;

// If the user_id is not presented, then we don't need to query the database at all. Return null or whatever suits your needs
if( ! $userId ) {
return null;
}

// Build the query
$sql = sprintf(
"SELECT `%s` FROM `users` WHERE `id` = :userId LIMIT 1",
$field
);

// Prepare the statement to be executed
// More to read about prepared statements: http://php.net/manual/en/pdo.prepare.php
$query = $db->prepare($sql);

// Pass the user id to our prepared query
// More to read about binding parameters: http://php.net/manual/en/pdostatement.bindparam.php
$query->bindParam(':userId', $userId);

// Execute the query
$query->execute();

// Return single result
return $query->fetch(PDO::FETCH_ASSOC);
}

如果您有任何问题,请随时提出。

- 根据 OP 评论更新 -

使用上面的函数你最终会得到一个数组结果,原因如下:

  • ->fetch()PDO::FETCH_ASSOC 选项相结合,如果找到结果,将返回一个包含单个项目的数组。该数组中的 key 在本例中是字段名称。

现在您可以通过以下方式访问该值:

$result = getField('username');
print $result['username'];

或者在你的函数中:

$result = $query->fetch(PDO::FETCH_ASSOC);
if( isset($result[ $field ] ) {
return $result[ $field ];
}

return null;

关于php - PDO 替代 mysql_ 获取字段信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30244925/

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