1

我根据数组条件从数据库中选择作者姓名。但是当我返回代码时,我看到我的情况重复了两次。

我的代码在这里

$alpha=array('A','B','C','D','E','F');
    $countarray=sizeof($alpha);
    $alert.=$countarray;
    for ($a=0;$a<=$countarray;$a++)
    {
        $selectlist="select * from quotationauthor where Author_name Like'$alpha[$a]%'";
        $result=mysqli_query($con,$selectlist)
                or die(mysqli_error($con));
        $countauthor=countlist($result);
        if($countauthor < 1)
        {

        }
        else
        {
            $alert.="<h1>$alpha[$a]$countauthor</h1><br/>";
            while($row=mysqli_fetch_array($result))
            {
                $alert.=$row[Author_name]."<br/>";
            }
        }
    }
    return $alert;

假设我在第一个条件下得到 A,而不是在我的数据库中搜索从 A 开始的作者名。我得到了正确的输出,但我的问题是数据库值被写入了两次

6
A


Albert Einstein
Abraham Lincoln
Abdul Kalam
Adolf Hitler

Albert Einstein
Abraham Lincoln
Abdul Kalam
Adolf Hitler

如您所见,数据库值被写入两次。我检查了我的数据库,发现只有 4 行。

4

1 回答 1

3

问题就在这里,在你的for循环中:

for ($a = 0; $a <= $countarray; $a++)

循环条件应该是:

$a < $countarray

发生的情况是,在最后一次迭代中,的值$alpha[$a]null(嗯,隐含地);当转换为字符串时,查询变为name LIKE '%'始终为真。

如果您的数据库中有以其他字母开头的行,或者甚至那些不在 A - F 集合中的行,那将更加明显

于 2013-02-22T09:03:47.040 回答