我根据数组条件从数据库中选择authorname。但是当我返回代码时,我看到我的情况重复了两次。
我的代码在这里
$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开始的authorname。我得到了正确的输出,但我的问题是数据库值写了两次
6
A
Albert Einstein
Abraham Lincoln
Abdul Kalam
Adolf Hitler
Albert Einstein
Abraham Lincoln
Abdul Kalam
Adolf Hitler
如您所见,数据库值被写入两次。我检查了我的数据库,发现只有4行。
答案 0 :(得分:3)
问题在于for
循环:
for ($a = 0; $a <= $countarray; $a++)
循环条件应为:
$a < $countarray
在最后一次迭代中,$alpha[$a]
的值为null
(嗯,隐含地);当转换为字符串时,查询变为name LIKE '%'
,这始终为真。
如果您的数据库中的行以其他字母开头,或者甚至是那些不在A - F
集合中的行,那么这一点会更加明显