gpt4 book ai didi

php - 如何使用 PDO 获取行

转载 作者:可可西里 更新时间:2023-11-01 12:27:08 28 4
gpt4 key购买 nike

我尽量不沮丧,但我最近了解到 mysql_* 在 PHP 中已被弃用。我决定学习如何使用 PDO。

我今天下午一直在看它,使用它连接到数据库很容易,但后来我想用它获取一行并将该行保存为一个由列名索引的数组(方法相同正如函数 mysql_fetch_array 所做的那样)。我想不出办法来挽救我的生命。

我会发布我的代码来澄清,我确信这很简单(所有编程错误总是很简单),但我肯定做错了什么。

// Connect to the database
$host = $_PARAM["DatabaseServer"];
$db = $_PARAM["MainDatabase"];
$dbuser = $_PARAM["DatabaseUser"];
$dbpass = $_PARAM["DatabasePass"];
try
{
$Database = new PDO("mysql:host=$host;dbname=$db", $dbuser, $dbpass);
}
catch (PDOException $e)
{
echo "There was an unexpected error. Please try again, or contact us with concerns";
}

$stmt = $Database->prepare("SELECT * FROM users WHERE username=?");
$stmt->execute(array($sUserCook));
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);

echo $row["username"];

最佳答案

fetchAll 做它所说的:它获取查询的所有结果。由于它会获取大量结果,因此您将获得一个索引数组。

如果您只需要一行,

fetch 会执行您可能正在查找的操作:它会为查询获取一个结果。如果您要将 mysql_* 代码转换为 PDO,最快的方法是使用此方法而不是 mysql_fetch_assoc

如果您仍然使用 fetchAll:您的代码可能看起来像这样:

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
echo $row['username'];
}

就像我说的,如果您只是将遗留代码转换为 PDO 代码,将所有查询更改为准备好的语句并替换以下内容可能会更容易:

  • mysql_fetch_assoc($result)
    -> $stmt->fetch(PDO::FETCH_ASSOC)
  • mysql_num_rows($result)
    -> $stmt->rowCount()
  • while ($row = mysql_fetch_assoc($result)) {}
    -> foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {}

关于php - 如何使用 PDO 获取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14035108/

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