gpt4 book ai didi

mysqli 到 pdo 简单选择语句

转载 作者:行者123 更新时间:2023-11-29 08:18:38 24 4
gpt4 key购买 nike

我刚刚将一些 MySQL 转换为 mysqli,但意识到我无法通过我的服务器设置访问 mysqlnd 驱动程序。因此,我现在需要转换为可用的 PDO。

我正在尝试将以下内容转换为 PDO,但从我读到的内容来看,PDO 中没有可用的 bind_result 。由于有用户输入,我需要为此使用准备好的语句。

    $stmt = $mysqli->prepare("SELECT user,pass FROM test_users WHERE user = ?");
// bind params
$stmt->bind_param('s', $_POST['username']);
// execute prepared statement
$stmt->execute();
// Bind result variables
$stmt->bind_result($ruser, $rpass);
// fetch values
$stmt->fetch();
// close statement
$stmt->close();

有人可以帮忙吗?这是我所拥有的,但不确定如何将结果值检索到可用变量中......

    $stmt = $db->prepare("SELECT user,pass FROM test_users WHERE user = ?");
// bind params
$value = $_POST['username'];
// execute prepared statement
$stmt->execute($value);
// stmt now holds results, but how can I retrieve them into useable values?
// ?
// close statement
$stmt->closeCursor();

最佳答案

您需要熟悉数组。它们的“可用性”并不比常规变量差。
有时数组甚至更有用,尤其是在您的情况下。

$stmt = $db->prepare("SELECT user, pass FROM test_users WHERE user = ?");
$stmt->execute([$_POST['username']]);
$row = $stmt->fetch();

现在 $row 包含查询返回的行。现在您可以测试是否返回任何数据,然后使用它。

对于密码检查,您可以这样使用

if ($row && $row['pass'] === whatever_hash_used($_POST['password']]))
{
unset($row['pass']);
$_SESSION['user'] = $row;
// etc
}

关于mysqli 到 pdo 简单选择语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20028811/

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