SQL从结果

时间:2018-02-28 23:49:26

标签: php mysqli

$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_objectfetch_array& fetch_row但他们都没有按我的意愿行事。我认为这是非常基本的东西吗?

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

1 个答案:

答案 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是单引号包装在实际项目的查询中。