【问题标题】:Having trouble converting mysql_result vars to mysqli将 mysql_result vars 转换为 mysqli 时遇到问题
【发布时间】:2018-01-08 18:25:38
【问题描述】:

经过一番搜索,我发现了同样的帖子,但没有什么对我的问题特别有帮助。

我正在通过我的代码将 mysql 更新为 mysqli,并且在将搜索结果转储到 vars 时遇到了障碍。 使用 while 循环,我处理每一行并将字段转储到 vars 中进行显示,然后重复直到结果行全部显示(基本搜索引擎结果)

我的原始代码具有以下 var 类型(为方便起见,我将显示一种)

$title = mysql_result($rs,$i,"title"); 

“rs”是con和query,i是行号,“title”是字段名

我看到手册中有一些方法,这里 mysqli_data_seek 似乎是正确的路线,但我根据我的编辑器将它吹在参数上(调用使用 2 个参数,我使用 3 个)

$title = mysqli_data_seek($rs,$i,"title");

我在 while 循环中有 18 个这样的变量,我怎样才能使它正常工作? (程序风格)

【问题讨论】:

  • 首先,如果你有 18 个,那么你可能做错了什么。其次,我们需要更多代码才能真正看到这里发生了什么
  • 如果您有时间将其转换为 mysqli_,请帮自己一个忙,将其转换为 PDOmysql_mysqli_ 无缘无故地让事情变得复杂。
  • 我也同意@Mikey PDO 比mysql*_*容易得多@
  • Mysqli 可能还有几行可以使用,但它没有任何错误,只要你参数化你的查询。如果您更喜欢 pdo,请务必!但至少两者都试一下,看看哪一个最舒适,最适合您的需求。
  • 它的旧代码使用mysql,如果可以避免的话,我宁愿不必将它重写为PDO,我只是想让它在php7下运行。真正的重写即将到来,但我不是专业的编码员,所以我需要一个更直接的解决方案。还有脾气暴躁的,是的,它很臃肿,但它的使用不足以对服务器产生任何明显的影响(每天少于 20 个访问者)

标签: php mysql mysqli


【解决方案1】:

在 MySQLi 库中没有 mysql_result 这样的方法。因此,您必须使用其中一种替代方法。要么运行

$allData = mysqli_fetch_all($rs, MYSQLI_ASSOC); // Has to be run only once for the result!
// And access data via
$title = $allData[ $i /* row-number */ ]['title'];
// Or (you didn't provide your current loop)
foreach($allData as $i => $row) {
    $title = $row['title'];
}

或运行

mysqli_data_seek($rs, $i); // Set pointer in mysqli to row-nr $i
$row = mysqli_fetch_assoc($rs);
$title = $row['title'];

或运行(我猜是最可取的解决方案,但您没有提供当前循环):

// Loop over all rows in the result-set
while($row = mysqli_fetch_assoc($rs)) {
    $title = $row['title'];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 2014-02-28
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    相关资源
    最近更新 更多