SQL从结果中选择某行

问题描述 投票:0回答:1
$sql = "SELECT * FROM myTable WHERE name = fred "; // THIS LINE SHOULD NOT BE CHANGED
$result = mysqli_query($conn,$sql);
for ($res = array (); $res = $result->fetch_assoc(); $charDB[array_shift($row)] = $res);

然后例如返回第二个结果(只是一个例子),我想回显到屏幕上。所以像$res[1]这样的东西只能获得第二排。

问题在于它将[]中的数字视为DB中行的主键而不是返回的结果数。基本上,我想处理它在数组中的位置而不是db中的主键返回的每一行。

我将如何实现这样的目标?我尝试过使用fetch_objectfetch_arrayfetch_row,但没有一个能做到我想要的。我认为这是非常基本的东西?

如果没有意义,请告诉我。

php mysqli
1个回答
1
投票

当你在你的$charDB[array_shift($row)] = $res表达中调用for时......

你告诉php到shift an element off the beginning of the row并使用第一个元素值作为每个存储行的键。你不想要这个。

要更正您的方法,您不需要进行任何其他函数调用(如array_values()),you just need to let php index the elements for you as you store resultset rows to your $res variable

使用此,一切都将按照您的意愿:

for($charDB=[]; $row=$result->fetch_assoc(); $charDB[]=$row);

请注意我对原始代码所做的变量名称更改。

附:我假设fred是单引号包装在你的实际项目的查询中。

© www.soinside.com 2019 - 2024. All rights reserved.