gpt4 book ai didi

php - $row 在哪里定义的?

转载 作者:行者123 更新时间:2023-11-29 06:46:56 25 4
gpt4 key购买 nike

在下面的代码中,谁能告诉我变量 $row 在 foreach 语句中的来源?

public function getProcResultSet($cmd)
{
try
{
$meta = $cmd->result_metadata();

while ($field = $meta->fetch_field())
{
$params[] = &$row[$field->name];
}

call_user_func_array(array(
$cmd,
'bind_result'), $params);

while ($cmd->fetch())
{
foreach ($row as $key => $val)
{
$c[$key] = $val;
}

$results[] = $c;
}

return $results;
}
catch (Exception $e)
{
logToFile("Exception: " . $e);
return resultFailedUnknown();
}
}

编辑,这里是这个函数的调用者:

public static function getPlayerUnits($playerId, $unitTypeId)
{
$mysqli = new mysqli(GDB_HOST, GDB_USERNAME, GDB_PASSWORD, GDB_NAME);

if ($mysqli->connect_errno)
{
throw new Exception('DB Connection Failed. Error Code: ' . $mysqli->connect_errno);
}

$cmd = $mysqli->prepare('CALL sp_get_player_units(?, ?)');

if (!$cmd)
{
throw new Exception($mysqli->error);
}

$cmd->bind_param('ii', $playerId, $unitTypeId);
$cmd->execute();

$results = parent::getProcResultSet($cmd);

$cmd->close();
$mysqli->close();

return $results;
}

这是我所做的所有事情都是在客户端和 JSON.stringify(..) 上收到的结果数组:

[{"Id":1,"Name":"Machine Gunner","Quantity":0},{"Id":2,"Name":"Rocket Soldier","Quantity":0},{"Id":3,"Name":"Paratrooper","Quantity":0},{"Id":4,"Name":"Demolition Soldier","Quantity":0}]

如您所见,结果按预期显示了每行的列数。

最佳答案

在第一个while 循环中,因为引用运算符&。它以前不存在。

$params[] = &$row[$field->name] 创建了 $row 变量。发生的事情是 PHP 想要引用不存在的 $row,因此它在没有任何消息的情况下创建它(如果你问我的话,这是一个错误源)。 $row 创建为数组,其中键 $field->name 设置为空。

$row 确实存在于foreach循环中,但不存在于while循环中。在那里它被创建为一个具有空值的数组。

整件事都是相当困惑的代码,可读性不是很好。有时在代码中冗长是一件好事。

关于php - $row 在哪里定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18166129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com