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

时间:2017-01-13 01:19:06

标签: php mysql mysqli

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

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]);
                    }
            }
    }

现在使用它的方式:

$q = "SELECT first_name,last_name,user_email FROM users WHERE country = '".$country."';

并调用随列名提供的函数friend_data:

friend_data ($q, "first_name|last_name|user_email");

变量($first_name,$last_name,$user_email)现在可以用在其他代码中,我想用这种格式保存,如下所示:

   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])特别是我不知道如何翻译&#34;进入工作mysqli代码。

非常感谢任何关于如何进行的帮助/提示/指示!

1 个答案:

答案 0 :(得分:2)

这是旧的,旧的,旧的编码。基本上,他们会自动执行PHP为您自动完成的工作。

我们必须在这里解决很多问题。首先,mysqli不使用像mysql_query这样的全局连接器。你必须将它作为参数#3传递给函数。 Don't use global if you can help it。接下来,我们将转到return一个数组。他们这样做的方式很笨重。

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;
}

一旦调用了您的函数,您就可以执行以下操作来恢复变量

$data = friend_data ($q, "first_name|last_name|user_email", $connection);
list($first_name, $last_name, $user_email) = $data;

这更加清洁,更容易与前进一起工作