- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
继续本主题,我们解释了 PDO 的大多数问题 How to successfully rewrite old mysql-php code with deprecated mysql_* functions?现在关于理解准备好的语句......所以为了删除 mysql_* 字符串有一些例子所以我对所有和其他用户的问题可能会发现有帮助哪个解决方案是最好的......所以旧的“组成*代码的例子:
in config.php:
$db = new dbConn('127.0.0.1', 'root', 'pass', 'people', 'login');
in login.php
$db->selectDb("login");
$query = mysql_query("SELECT * FROM account WHERE id='".$_session["id"]."' LIMIT 1");
$result = mysql_fetch_array($query);
$_session["id"] 是在实际登录时定义的,所以现在我们有几种选择:
In config.php:
$db_people = new PDO('mysql:host=127.0.0.1;dbname=people;charset=UTF-8', 'root', 'pass');
$db_login = new PDO('mysql:host=127.0.0.1;dbname=login;charset=UTF-8', 'root', 'pass');
And in login.php 1):
$stmt = $db_login->prepare("SELECT * FROM account WHERE id=? LIMIT 1");
$stmt->execute(array($_session["id"]));
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
或者排除查询时这个更好?还是上一个更好?
And in login.php 2):
$query = "SELECT * FROM account WHERE id=? LIMIT 1";
$parameters = array($_session["id"]);
$statement = $db_login->prepare($query);
$statement->execute($parameters);
$results = $statement->fetch(PDO::FETCH_ASSOC);
还有这个登录表单:
public function login($user, $password)
{
global $web, $db;
if (!empty($user) && !empty($password))
{
$user = $web->esc($user);
$password = $web->doHash($user, $password);
$db->selectDb('login');
$qw = mysql_query("SELECT * FROM account WHERE username='".$user."' AND pass_hash='".$password."'");
if (mysql_num_rows($qw) > 0)
{
$result = mysql_fetch_array($qw);
$_session['name'] = $result['username'];
$_session['id'] = $result['id'];
return true;
}
else
return false;
}
else
return false;
}
转成这种形式:
public function login($user, $password)
{
global $web, $db_login;
if (!empty($user) && !empty($password))
{
$user = $web->esc($user);
$password = $web->doHash($user, $password);
$stmt = $db_login->prepare("SELECT * FROM account WHERE username=? AND pass_hash=?");
$stmt->execute(array($user, $password));
$rows = $stmt->rowCount();
if ($rows > 0)
{
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
$_session['name'] = $result['username'];
$_session['id'] = $result['id'];
return true;
}
else
return false;
}
else
return false;
}
是否可以,还是再次进行单独的查询,或者以完全不同的方式进行查询?谢谢大家。
另外,当有多个 stmt 时,我应该为它使用不同的名称吗?例如,我使用 stmt 一次,然后在使用 result2 执行 stmt 之后创建一个 result1 我是否应该为 stmt 变量也选择不同的名称,或者只有结果名称可以不同?
最佳答案
好的,所以解决方案 login.php 1) 看起来很简单,不用着急。此外,登录页面似乎工作正常,因此它应该符合所有规则并且没问题 :)
关于php - 如何使用已弃用的 mysql_* 函数成功重写旧的 mysql-php 代码?第二部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10923886/
自从我在服务器上将 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_
我是一名优秀的程序员,十分优秀!