php和mysql查询并显示_PHP和MySQL使用相同的查询显示不同的结果

作者遇到在PHP执行与本地MySQL相同的LEFT JOIN查询时,计数功能未按预期递增且返回多余行的问题。查询涉及从lychee_albums和lychee_photos表中筛选特定条件的图片,但结果在两种环境下不一致。寻求解决计数问题和结果重复的原因。
摘要由CSDN通过智能技术生成

我有一个

MySQL查询,直接在我的本地

MySQL数据库上执行时工作正常,但在通过

PHP执行时显示不同的结果.

SELECT a.id, a.title, a.public, a.sysstamp, a.password, t.thumbURL, t.count

FROM 0_lychee_albums AS a

LEFT JOIN (SELECT id, album, thumbURL,

@num := IF(@group = album, @num + 1, 0) AS count,

@group := album AS dummy

from 0_lychee_photos

WHERE album != 0

ORDER BY album, star DESC) AS t ON a.id = t.album

WHERE count <= 2 OR count IS NULL;

或作为一个班轮:

SELECT a.id, a.title, a.public, a.sysstamp, a.password, t.thumbURL, t.count FROM 0_lychee_albums AS a LEFT JOIN (SELECT id, album, thumbURL, @num := IF(@group = album, @num + 1, 0) AS count, @group := album AS dummy FROM 0_lychee_photos WHERE album != 0 ORDER BY album, star DESC) AS t ON a.id = t.album WHERE count <= 2 OR count IS NULL;

结果:

| id | title | public | sysstamp | password | thumbURL | count |

| 71 | [Import] 01 | 0 | 1415091268 | NULL | cad008943372d984a9b74378874128f8.jpeg | 0 |

| 72 | [Import] 9n401238 | 0 | 1415091268 | NULL | 7b832b56f182ad3403521589e2815f67.jpeg | 0 |

| 72 | [Import] 9n401238 | 0 | 1415091268 | NULL | f058f379ce519f1d8a2ff8c0f5003631.jpeg | 1 |

| 72 | [Import] 9n401238 | 0 | 1415091268 | NULL | a4d59377bed059e3f60cccf01a69c299.jpeg | 2 |

| 73 | Untitled | 0 | 1415114200 | NULL | NULL | NULL |

PHP结果:

| id | title | public | sysstamp | password | thumbURL | count |

| 71 | [Import] 01 | 0 | 1415091268 | NULL | cad008943372d984a9b74378874128f8.jpeg | 0 |

| 72 | [Import] 9n401238 | 0 | 1415091268 | NULL | 7b832b56f182ad3403521589e2815f67.jpeg | 0 |

| 72 | [Import] 9n401238 | 0 | 1415091268 | NULL | f058f379ce519f1d8a2ff8c0f5003631.jpeg | 0 |

| 72 | [Import] 9n401238 | 0 | 1415091268 | NULL | a4d59377bed059e3f60cccf01a69c299.jpeg | 0 |

| 72 | [Import] 9n401238 | 0 | 1415092318 | NULL | 7b832b56f182ad3403521589e2815f67.jpeg | 0 |

| 72 | [Import] 9n401238 | 0 | 1415092369 | NULL | cad008943372d984a9b74378874128f8.jpeg | 0 |

| 72 | [Import] 9n401238 | 0 | 1415092369 | NULL | 84030a64a1f546e223e6a46cbf12910f.jpeg | 0 |

| 73 | Untitled | 0 | 1415114200 | NULL | NULL | NULL |

a)计数没有像它应该增加的那样

b)因为a)它显示的行数多于应有的数量(应限制为每个ID 3个)

我多次检查它,两个查询完全相同. PHP中没有用户输入或任何差异.

我已经检查了similar questions,但他们没有帮助.以下查询在MySQL和PHP上显示相同的结果:

SHOW VARIABLES LIKE 'character_set%';

SHOW VARIABLES LIKE 'collation%';

是否有人意识到存在这种差异的问题?

编辑更多信息:

$database = new mysqli($host, $user, $password, $database);

$query = "SELECT a.id, a.title, a.public, a.sysstamp, a.password, t.thumbURL, t.count FROM 0_lychee_albums AS a LEFT JOIN (SELECT id, album, thumbURL, @num := IF(@group = album, @num + 1, 0) AS count, @group := album AS dummy FROM 0_lychee_photos WHERE album != 0 ORDER BY album, star DESC) AS t ON a.id = t.album WHERE count <= 2 OR count IS NULL";

$albums = $database->query($query);

while ($album = $albums->fetch_assoc()) { print_r($album); }

在执行查询之前,我也尝试过使用和不使用以下内容:

$database->set_charset('utf8');

$database->query('SET NAMES utf8;');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值