表:
id | date | number
----------------------
1 | 01.01 | 12
2 | 02.01 | 15
3 | 03.01 | 174
4 | 04.01 | 14
5 | 05.01 | 65
6 | 06.01 | 78
7 | 07.01 | 69
8 | 08.01 | 147
9 | 09.01 | 12
10 | 10.01 | 87
我尝试输出date
排序的id
的最后7个值,但有一些内爆。
$day=$mysqli->query("SELECT `date` FROM `online` ORDER BY `id` DESC LIMIT 7");
$day=$day->fetch_all();
$day="'". implode("', '", $day) . "'";
echo $day;
echo
返回'Array',
x7。如何输出'01.01','02.01', etc.
?
答案 0 :(得分:0)
fetched数组中的每个元素都是其列的数组。
使用array_map
调用解开它的一种方法:
$first = function($arr) {
return $arr[0];
};
$day = $day->fetch_all();
$day = array_map($first, $day);
$day = "'". implode("', '", $day) . "'";
echo $day;
答案 1 :(得分:0)
没有任何额外的{{the_detail.nat_hr.ref_number}}
{{the_detail.user.profile.nat_hr.ref_number}}
函数,只需要纯 MySql 方法:
php
https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat
答案 2 :(得分:0)
问题是$ day-> fetch_all()生成关联数组,而implode不支持关联数组
尝试:
$sql = "SELECT `date` FROM `online` ORDER BY `id` DESC LIMIT 3";
$result = $conn->query($sql);
$day = [];
while($row = $result->fetch_row()) {
$day[]=$row[0]; }
$day="'". implode("', '", $day) . "'"; echo $day;
答案 3 :(得分:0)
首先,您的代码使用$day
在其生命周期中至少存储三种不同的内容。虽然编译器没有抱怨,但对于人类而言,这是令人困惑和难以理解的。让我们重写您的代码,为不同的项目使用不同的变量:
$result = $mysqli->query("SELECT `date` FROM `online` ORDER BY `id` DESC LIMIT 7");
$days = $result->fetch_all();
$text = "'" . implode("', '", $days) . "'";
echo $text;
快速print_r($days)
会告诉您$result->fetch_all();
返回的值是二维数组。它的每个项都是一个数组,结果集中有一行。
有很多方法可以获取date
返回的每一行的$result->fetch_all()
列。最容易阅读和理解的方法是要求mysqli_result::fetch_all()
将行返回为由列名索引的associative arrays(默认情况下,它返回以数字方式索引的数组),然后使用函数array_column()
仅获取date
列的值,并仅将其传递给implode()
。
代码是这样的:
$result = $mysqli->query("SELECT `date` FROM `online` ORDER BY `id` DESC LIMIT 7");
$days = $result->fetch_all(MYSQLI_ASSOC);
$text = "'" . implode("', '", array_column($days, 'date')) . "'";
echo $text;
可读性(性能损失小)和正确性的下一步是在加入决赛之前单独引用每天串。函数array_map()
可以用于此;它将回调函数应用于传递的数组的每个项,并返回一个包含回调函数返回的值的新数组。
$result = $mysqli->query("SELECT `date` FROM `online` ORDER BY `id` DESC LIMIT 7");
$days = $result->fetch_all(MYSQLI_ASSOC);
$text = implode(', ', // Join the quoted days with commas
array_map(
function($day) {
return "'{$day}'"; // Put each day in single quotes
},
array_column($days, 'date') // Get only the 'date' column
)
);
echo $text;
使用不返回任何结果的查询进行快速测试(使用空表或添加不可能的WHERE
条件)会发现此代码不会产生任何输出(这是正确的,因为没有从原始代码生成一对空撇号(''
),这是不正确的(让我们记住要求是将每一天放在单引号中并用逗号和空格分隔日期) 。)
答案 4 :(得分:-1)
要查看您拥有的是否是您想要的,请开始替换:
SWPrecacheWebpackPlugin
使用:
echo $day;
如果您看到了自己想要的内容,那么您的SQL请求就能正常运行。接下来,像@Mureinik所说,在数组中导航。
如果您想要更清洁的显示,可以使用:
print_r($day);
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre" pre" element表示预先格式化的文本。此元素中的空格显示为已键入。