gpt4 book ai didi

php - PDO::FETCH_ASSOC 仅返回整数的第一位

转载 作者:行者123 更新时间:2023-11-29 15:41:01 26 4
gpt4 key购买 nike

我正在使用 fetch(PDO::FETCH_ASSOC) 从 SQL 查询返回多行。此函数仅返回整数列的第一位。例如,我期待“59”,但我得到“5”返回。我编写的查询返回四列,其中三列是整数,一列是字符串 (varchar)。字符串列正在工作,但整数列在第一个数字之后被截断。

此代码嵌套在更高级别的查询中,我成功提取了查询中使用的变量。

为了确定问题,我回显输出并将其与在 MySQL 中运行 SQL 语句时得到的结果进行比较。

正确数据:

Correct Data

数据不正确:

Incorrect Data

$picksQry = $dbcnx->prepare("SELECT gi.gameNo AS gameNo
, p.pickCD as pickCD
, t.teamName as teamName
, p.isLock as isLock

FROM NCF_gamesInLeague gi JOIN NCF_games g ON gi.gameID = g.gameID
JOIN ALL_usersInLeague ui ON gi.leagueID = ui.leagueID
LEFT JOIN NCF_picks p ON gi.gilID = p.gilID AND p.uilID = :uilIDZ
LEFT JOIN ALL_teams t ON p.pickCD = t.teamCD

WHERE g.weekID = :week
AND g.season = :year
AND ui.userID = :usersID
AND ui.leagueID = :leagueID

ORDER BY gameNo ASC");

$picksQry->execute(array(
':uilIDZ' => $uilIDZ
, ':week' => $week
, ':year' => $year
, ':usersID' => $userIDZ[$leagueCnt][$userCnt]
, ':leagueID' => $leagueID[$leagueCnt]
));

$picksRow = $picksQry->fetch(PDO::FETCH_ASSOC);

$picksCnt = 1;

while ($picksRow == true) {
$gameNo[$leagueCnt][$userCnt][$picksCnt] = $picksRow['gameNo'];
$pickCD[$leagueCnt][$userCnt][$picksCnt] = $picksRow['pickCD'];
$teamName[$leagueCnt][$userCnt][$picksCnt] = $picksRow['teamName'];
$isLock[$leagueCnt][$userCnt][$picksCnt] = $picksRow['isLock'];
$picksRow = $picksQry->fetch(PDO::FETCH_ASSOC);

$picksCnt++;

}

此查询的第一行应该是“1”“59”“Miami FL”“0”,但我得到的是“5”而不是“59”;随着循环的进行,任何大于 10 的数字都只会返回第一个数字。

编辑:我按照下面的建议添加了 print_r($picksRow) 并获取了我期望的数组,但是回显的数据仍然不正确。 我更新了代码以包含 print_r 以查看数组。数组是正确的,但是回显的数据仍然不正确:数组:( [gameNo] => 1 [pickCD] => 59 [teamName] => 迈阿密佛罗里达州 [isLock] => 0 )
数据:游戏编号 =1 | pickCD = 5 |球队名称 = 佛罗里达州迈阿密 |是锁=0

现在的 while 循环是:

while ($picksRow = $picksQry->fetch(PDO::FETCH_ASSOC)) {

print_r($picksRow);

$gameNo[$leagueCnt][$userCnt][$picksCnt] = $picksRow['gameNo'];
$pickCD[$leagueCnt][$userCnt][$picksCnt] = $picksRow['pickCD'];
$teamName[$leagueCnt][$userCnt][$picksCnt] = $picksRow['teamName'];
$isLock[$leagueCnt][$userCnt][$picksCnt] = $picksRow['isLock'];

echo '&nbsp &nbsp &nbsp &nbsp &nbsp GameNo ='.$gameNo[$leagueCnt][$userCnt][$picksCnt]
.' | pickCD = '.$pickCD[$leagueCnt][$userCnt][$picksCnt]
.' | teamName = '.$teamName[$leagueCnt][$userCnt][$picksCnt]
.' | isLock = '.$isLock[$leagueCnt][$userCnt][$picksCnt].'<br>';

$picksCnt++;

}

最佳答案

我相信找到了问题。看起来好像与我命名变量的方式有关。我有一个名为“$pickCD[$leagueCnt][$gi]”的早期变量,后来的变量“$pickCD[$leagueCnt][$userCnt][$picksCnt]”。我将后面的变量重命名为 $pickCDX 并且它工作正常。 Bambo、waterloomatt 和 Raymond,感谢你们为我指出了发现此错误的正确方向。

我不确定这如何影响我的输出,因为 $pickCD[1][1] 不是与 $pickCD[1][1][1] 不同吗?,也许有更多智慧的人可以解释这一点。无论如何,请注意如何命名变量,尤其是在嵌套循环语句中。

关于php - PDO::FETCH_ASSOC 仅返回整数的第一位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57660464/

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