如何为while循环的第一次迭代设置PHP变量?

时间:2019-10-12 06:32:54

标签: php html mysql

我正在尝试将变量$ OnWishList设置为显示刻度或加号,具体取决于该属性是否在愿望清单中。尽管这样做,它会跳过wile循环中的第一个属性,并在第二个属性上显示第一个属性的正确符号。如何获得在正确属性上显示的符号。如果这是一个简单的问题,我深表歉意,因为我是PHP和SQL的新手,并且为此问题苦苦挣扎了一段时间。

 <Agenda
    minDate = {currentDate}
    maxDate = {day6}
    selected = {currentDate}
    items: {weeklyItems(currentDate)}
    renderEmptyDate={() => {return (<View/>);}}
/>

我希望$ OnWishList变量从while循环中的第一个属性开始显示刻度和加号。但是,显示符号时会跳过循环中的第一个属性,并在第二个属性上显示其符号,依此类推。

3 个答案:

答案 0 :(得分:1)

尽管有一些争论,但通常认为,在任何循环之前制作一个准备好的语句并在循环中多次执行并传递不同的变量时,它会产生更好的性能。这就是使用{ {1}}并将变量分配给sql中的占位符。 通过在第一次迭代中将代码移到循环顶部附近,将在尝试使用变量prepared statement

之前调用它
$OnWishList

答案 1 :(得分:0)

像while循环中那样检查第一次迭代

<?php 
$i=1;
while($row = mysqli_fetch_array($result)) {    
?>
 <?php 
if($i==1){
echo "Yes or your code";
}
else
{
   echo "no or your code";
}
?>

<?php $i++; } ?>

答案 2 :(得分:0)

第二个if子句存在巨大错误:

if ($row = mysqli_fetch_array($result2)) {
//       ^ only one equal sign !!
       $OnWishList = "<span id='tickSpan'>&#10003;</span>";
       }
else {
$OnWishList = "<span id='plusSpan'>+</span>";
// this will NEVER be executed
    }

因此,实际上是在检查是否可以分配$row mysqli_fetch_array($result2),而不是检查行是否等于某行,因此,else子句仅在无法分配时才执行$row变量的新值。