首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PHP函数的for循环中将mysql_ result()转换为mysqli

在PHP函数的for循环中将mysql_ result()转换为mysqli
EN

Stack Overflow用户
提问于 2017-01-13 09:19:06
回答 1查看 58关注 0票数 0

我遇到了一个旧函数,我想将其转换为mysqli,但我被困在mysql_result ($result, 0, $colname['i])部分;使用data/field_seek是不是最好,如果是,最好的方法是什么?

代码语言:javascript
运行
复制
function friend_data($q, $colname)
    {
            $result = mysql_query ($q);
            if (mysql_num_rows($result) > 0)
            {
                    $colname = explode("|", $colname);
                    for ($i = 0; $i < count($colname); $i++)
                    {
                            global $$colname[$i];
                            $$colname[$i] = mysql_result ($result, 0, $colname[$i]);
                    }
            }
    }

现在使用它的方式是:

代码语言:javascript
运行
复制
$q = "SELECT first_name,last_name,user_email FROM users WHERE country = '".$country."';

并调用与列名一起提供的函数friend_data:

代码语言:javascript
运行
复制
friend_data ($q, "first_name|last_name|user_email");

变量($first_name,$last_name,$user_email)现在可以在代码的其余部分中使用,我希望以如下格式维护它:

代码语言:javascript
运行
复制
   function friend_data($q, $colname)
    {
            $result = $db->query ($q);

            if (mysqli_num_rows($result) > 0)
            {
                    $colname = explode("|", $colname);
                    for ($i = 0; $i < count($colname); $i++)
                    {
                            global $$colname[$i];
                            $$colname[$i] = ... ;
                    }
            }
    }

所以我特别不知道如何“翻译”成mysql_result ($result, 0, $colname[$i])代码。

任何关于如何继续的帮助/提示/指示都将不胜感激!

EN

Stack Overflow用户

回答已采纳

发布于 2017-01-13 09:46:28

这是很老,很老,很老的代码。基本上,它们是手动完成PHP自动为您完成的工作。

我们必须在这里修复很多东西。首先,mysqli不像mysql_query那样使用全局连接器。您必须将其作为参数#3. Don't use global if you can help it传递给函数。接下来,我们将对数组执行return操作。他做这件事的方式很笨拙。

代码语言:javascript
运行
复制
function friend_data($q, $cols, $connection) {
     $data = []; // New array
     $col = explode('|', $cols);
     foreach($col as $col_row) $data[$col_row] = [];
     $result = $connection->query($q);

     if(!$result->num_rows) return $data; // No rows, so no data

     while($row = $result->fetch_assoc()) {
          foreach($row as $key => $data_col) $data[$key][] = $data_col;
     }
     return $data;
}

调用函数后,可以执行以下操作来重新获取var

代码语言:javascript
运行
复制
$data = friend_data ($q, "first_name|last_name|user_email", $connection);
list($first_name, $last_name, $user_email) = $data;

在以后的工作中,这将更加清晰和容易。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41625939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档