我遇到了一个旧函数,我想将其转换为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])代码。
任何关于如何继续的帮助/提示/指示都将不胜感激!
发布于 2017-01-13 09:46:28
这是很老,很老,很老的代码。基本上,它们是手动完成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;
}调用函数后,可以执行以下操作来重新获取var
$data = friend_data ($q, "first_name|last_name|user_email", $connection);
list($first_name, $last_name, $user_email) = $data;在以后的工作中,这将更加清晰和容易。
https://stackoverflow.com/questions/41625939
复制相似问题