我遇到了一个旧功能,我想将其转换为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代码。
非常感谢任何关于如何进行的帮助/提示/指示!
答案 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;
这更加清洁,更容易与前进一起工作