gpt4 book ai didi

php - 在 mysql_fetch_array() 上循环运行时使用 PHP 的奇怪结果

转载 作者:行者123 更新时间:2023-11-29 04:11:54 24 4
gpt4 key购买 nike

我有一组数据库结果,其中一些列有空字段。我正在运行这个查询:

SELECT * FROM `data` WHERE category = '$category' ORDER BY name

输出结果的 PHP 是这样的(非常简化的版本):

while ($qValues = mysql_fetch_array($result)) {
if ($qValues["licence"] != "") {
$lice = 'Licence: ' . $qValues["licence"];
}
if ($qValues["publisher"] != "") {
$pub = 'Publisher: ' . $qValues["publisher"];
}
}

发生的事情是,如果前一行有发布者,但当前行没有发布者(不是 null,空字符串),它正在输出前一行的数据。

我不知道这是怎么发生的,因为在我看来,mysql_fetch_array 将数据放在一个网格中,while 循环将它的内部计数器逐行推进。如果该行包含空字符串,我不明白该行的数据如何渗入下一行。

这里发生了什么?

最佳答案

由于您仅在列有值时才设置变量,因此当列为空时变量不会被重置。这会导致您看到之前记录中的值的问题。

您应该每次都设置变量,即使该列是空白的。您可以使用 else 语句:

while ($qValues = mysql_fetch_array($result)) {
if ($qValues["licence"] != "") {
$lice = 'Licence: ' . $qValues["licence"];
} else {
// Set to blank so as not to keep value from last iteration
$lice = "";
}
if ($qValues["publisher"] != "") {
$pub = 'Publisher: ' . $qValues["publisher"];
} else {
// Set to blank so as not to keep value from last iteration
$pub = "";
}

关于php - 在 mysql_fetch_array() 上循环运行时使用 PHP 的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8156461/

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