gpt4 book ai didi

php - @row :=@row+1 的 php 等价物是什么

转载 作者:行者123 更新时间:2023-12-04 13:45:56 29 4
gpt4 key购买 nike

我有一个 MySQLSQL 中成功运行的语句数据库游乐场。它查询并返回 每 10 行 在我的 location_values 表中,与 ID 中的任何差距无关。

它看起来像这样:

MySQL


set @row:=-1;

SELECT location_values.*
FROM
location_values
INNER JOIN
(
SELECT id
FROM
(
SELECT @row:=@row+1 AS rownum, id
FROM
(
SELECT id FROM location_values ORDER BY id
) AS sorted
) as ranked
WHERE rownum % 10 = 0
) AS subset
ON subset.id = location_values.id

working db-fiddle

问题:我想转换上面的这个语句并在 PHP 中运行它而是查询,但我在这样做时遇到了问题。

因为它目前是我的习惯 PHP函数继续打印整个表,而不是按照 MySQL 语句每 10 行打印一次。我怀疑是因为没有翻译 set @row:=-1;@row:=@row+1PHP .

My PHP function


function get_incidents() {

$row = -1;

$query = query("

SELECT location_values.*
FROM
location_values
INNER JOIN
(
SELECT id
FROM
(
SELECT $row + 1 AS rownum, id
FROM
(
SELECT id FROM location_values ORDER BY id
) AS sorted
) as ranked
WHERE rownum % 10 = 0
) AS subset
ON subset.id = location_values.id");


confirm($query); //passes in the global $connection;



while ($row = fetch_array($query)) {


$incidents = <<<DELIMETER



<tr>

<td>{$row['id']}</td>
<td>{$row['name']}</td>
<td>{$row['lat']}</td>
<td>{$row['lng']}</td>


</tr>



DELIMETER;

echo $incidents;


} // end of while loop





} // end of function

我是 PHP 新手,如果您能指导我如何最好地重构我的 PHP 函数以实现我的目标,即无论 ID 中的差距如何,都返回每 10 行,我将不胜感激。

最佳答案

MySQL >8.0
您可以使用窗口函数实现相同的任务。如果我没有记错的话,正确的做法如下:

SELECT t.* FROM (SELECT *, Row_number() OVER() AS rn FROM location_values) t 
WHERE t.rn % 10 = 1
https://www.db-fiddle.com/f/tb2nLZ6dkDPaQxkc6My9Yg/2
MySQL <8.0
您可以使用 session 属性模拟窗口函数,但这并不总是可靠的。
方法一(只能执行一次;不推荐):
SELECT t.*
FROM
(SELECT *, @position:=((SELECT ifnull(@position, 0)) + 1) AS rn FROM location_values) t
WHERE t.rn % 10 = 1
方法二:
SELECT location_values.*
FROM location_values,
(SELECT @row_number:=0) AS temp
WHERE (@row_number:=@row_number + 1) % 10 = 1
https://www.db-fiddle.com/f/tb2nLZ6dkDPaQxkc6My9Yg/3

关于php - @row :=@row+1 的 php 等价物是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59737178/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com