每个表字段设置为00 00 00 00 00 00.我正在尝试通过计算每个列字段中的每个00 00 00 00 00 00号来查找订购解决方案。下面的代码工作正常,但它很难看,我无法订购结果。谢谢!
期望的结果(例子)
数字 - 它出现在列
中的时间栏目样本
if ($stmt = $post_con->prepare('SELECT asw FROM tb WHERE CONCAT(" ", asw, " ") LIKE CONCAT("% ", ?, " %")')) {
for($i = 1; $i < 60; $i++){
$stmt->bind_param("s", $de);
$de = sprintf('%02d', $i);
$stmt->execute();
$stmt->store_result();
$qty = $stmt->num_rows;
/* bind result variables */
$stmt->bind_result($asw);
$stmt->fetch();
echo $qty.' -> '.$de.'</br>';
$stmt->close();
}
答案 0 :(得分:0)
根据您所寻找的内容,如果没有更多细节,那么更多的最佳实践将很难分辨出来:
$mysqli->query('select * from afusers where username ="' . $username . '"')
答案 1 :(得分:0)
您可以使用SQL为您完成更多工作。您可以将this question中的查询应用于您的情况。
子查询将所有数字分成各自的行。它使用SELECT 1 UNION ALL ... SELECT 6
来查找第一个数字,......和第6个数字,并将每个数字放入自己的行中。 (请注意,您必须最多6个,因为每行有6个数字。如果您有更多,则必须相应地调整查询。)
从那里开始就像GROUP BY
上的数字一样简单,COUNT()
显示唯一的事件,ORDER BY
数字以ASC
结束顺序。
SELECT num, COUNT(num)
FROM (
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(tb.asw, ' ', numbers.n), ' ', -1) num
FROM
(SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6
) AS numbers
INNER JOIN tb
ON CHAR_LENGTH(tb.asw)
-CHAR_LENGTH(REPLACE(tb.asw, ' ', ''))>=numbers.n-1
) numNumbers
GROUP BY num
ORDER BY num ASC