- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我学习 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/
自从我在服务器上将 PHP 更新到 PHP 5.5 后,我想使用 PDO 而不是 mysql_ 重写一个项目。在这个项目中,我有一个 Controller 和一个模型(当然还有一个 View ,但这并
我的一个托管服务器不支持 PDO。有吗mysql_与 PDO prepare() 具有相同功能的命令和execute() ? 我正在寻找参数替换功能,即 VALUES (?, ?) . 最佳答案 您可
这个问题在这里已经有了答案: Why shouldn't I use mysql_* functions in PHP? (14 个答案) 关闭 6 年前。 我听说 mysql_ 扩展在当前的 PH
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
在 php.net 网站上,他们说那些在 php5 或更高版本旁边使用 mysql4.1 的人必须使用非常“MYSQLI_”而不是“MYSQL_”。 他只想知道一件事,它会影响站点的性能,站点的几个问
当我学习 php 时,我从显然较旧的指南中学习并且一直在使用 mysql_ 函数。我正在将所有内容切换到 PDO,我有一个我真的想保留的功能,但我不太清楚如何更改它。这是 mysql_ 函数。 fun
首先我应该说我开始学习 PDO 并尝试重写一些旧的我的代码。这是我在 jquery/ajax/pdo/mysql 评论系统的教程中找到的一个正在运行的评论系统。这是我正在尝试重写的 mysql_* 部
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: mysql_fetch_array() expects parameter 1 to be resource
我的 SQL 数据库中有一张表,该表有两个字段,一个用于 ID,另一个用于整数。我想获取整数字段中的值,其中 id 等于我传入的特定数字。id 字段称为“id”,整数字段称为“loglevel”。这是
我只想检查 $lectureName 显示的位置是否存在一行。如果行中某处确实存在 $lectureName,我希望函数返回“已分配”,如果没有,则它应该返回“可用”。这就是我所拥有的。我很确定它一团
我写了一些代码,这些代码经常使用 mysqli_。问题是我现在需要将此代码与使用 mysql_ 的代码集成,并处理连接、身份验证等。我不想创建第二个连接,但是 mysql_ 缺少一些功能,例如,准备好
想要改进此帖子? 提供此问题的详细答案,包括引用和对答案正确原因的解释。不够详细的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query(
想要改进此帖子? 提供此问题的详细答案,包括引用和对答案正确原因的解释。不够详细的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query(
想要改进此帖子? 提供此问题的详细答案,包括引用和对答案正确原因的解释。不够详细的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query(
想要改进此帖子? 提供此问题的详细答案,包括引用和对答案正确原因的解释。不够详细的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query(
想要改进此帖子? 提供此问题的详细答案,包括引用和对答案正确原因的解释。不够详细的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query(
我需要用 PDO 的 mysql_* 函数重写我的 php 代码,所以我有: 我尝试写这个,但使用像这样的 PDO 函数: setAttribute(PDO::ATTR_ERRMODE, PDO::
想要改进这篇文章吗?提供此问题的详细答案,包括引用和解释为什么你的答案是正确的。不够详细的答案可能会被编辑或删除。 不应该使用 mysql_* 的技术原因是什么?功能? (例如 mysql_query
想要改进这篇文章吗?提供此问题的详细答案,包括引用和解释为什么你的答案是正确的。不够详细的答案可能会被编辑或删除。 不应该使用 mysql_* 的技术原因是什么?功能? (例如 mysql_query
想要改进这篇文章?提供这个问题的详细答案,包括引文和解释为什么你的答案是正确的。没有足够细节的答案可能会被编辑或删除。 为什么不应该使用 mysql_* 的技术原因是什么?职能? (例如 mysql_
我是一名优秀的程序员,十分优秀!