【问题标题】:Using PHP Functions to get database values使用 PHP 函数获取数据库值
【发布时间】:2013-10-03 23:22:50
【问题描述】:

所以我在这里创建了一个函数。当我使用 postgres 数据库时它可以工作,但是一旦我切换到 mysqli,由于某种原因,它不会返回 id。这是我的功能:

function getAccID($connection, $username){
    $res = mysqli_query($connection, "SELECT accounts_id FROM people WHERE people.username ='$username'");
    if ($res){
        $row = mysqli_fetch_assoc($res);
        if ($row){
            return ($row[0]);
        }
    }else{
        //handle the error
    }

}

这是我声明函数的方式:

$accountID = getAccID($connection, $user);
$p->addContent("Account ID: $accountID");
if (!$accountID) $p->addContent('Error: ' . mysqli_error($connection) . "<br>");

PS:如果有人使用 mysqli_query 而不是准备语句对我说任何话,我会谋杀一些婴儿:L。我正在用它来测试,一旦一切正常,就很容易切换到准备好的语句。

已修复

问题在于 Postgres 我可以使用字段的 id,但对于 mysqli,我必须使用名称。

因此这是行不通的

$row[0];

必须是:

$row["name_of_field"];

【问题讨论】:

  • (如果你要“测试”一些东西,为什么不测试将要使用的实际东西呢?)
  • 因为我喜欢边做边测试。这就是我的工作方式。
  • 并且使用查询进行测试比使用准备好的语句更容易。
  • (如果你要切换到别的东西,你不是在测试它;这是一个不合适的模拟场景。)
  • 无论如何,1) 在“处理错误”中做一些事情,并且; 2) 验证 mysqli_fetch_assoc 的结果是您认为的结果 - 即有 are 结果并且您在所述行中返回所需的值(我看到一个可疑的 if ,不是传统的while,也不是$row["accounts_id"])。就像现在一样,非此即彼可能会“失败”,这将导致意外结果 - 主要是没有有用的返回值 - 由于执行流路径不完整。

标签: php function mysqli


【解决方案1】:

当你使用 mysqli_fetch_assoc

$row 应该有字段的名称

使用 $row['id'] 代替 $row[0]

【讨论】:

  • 我真的只是想通了这一点,并准备发布回复。哈哈还是谢谢了。
  • 对于其他遇到此问题的人,这是正确的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-26
  • 2021-04-01
  • 1970-01-01
  • 2019-09-03
  • 2023-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多