$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中的主键返回的每一行。
我将如何实现这样的目标?我尝试过使用fetch_object
,fetch_array
& fetch_row
但他们都没有按我的意愿行事。我认为这是非常基本的东西吗?
如果没有意义,请告诉我。
答案 0 :(得分: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);
请注意我对原始代码所做的变量名称更改。
P.S。我假设fred
是单引号包装在实际项目的查询中。