$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_object
,fetch_array
和fetch_row
,但没有一个能做到我想要的。我认为这是非常基本的东西?
如果没有意义,请告诉我。
当你在你的$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
是单引号包装在你的实际项目的查询中。