Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Mysql While循环覆盖变量并仅显示一个结果_Php_Mysql - Fatal编程技术网

PHP Mysql While循环覆盖变量并仅显示一个结果

PHP Mysql While循环覆盖变量并仅显示一个结果,php,mysql,Php,Mysql,我有一个PHP脚本,用从数据库获得的结果填充下拉菜单。我遇到的问题是,下拉菜单中只显示最后一个结果。我认为这是因为每次运行时,获取所有结果的while循环都会覆盖存储字符串的变量 我曾试图找到一个解决办法来解决它,但最终陷入了一个没有解决办法的黑暗角落 Php代码: $sql2 = "SELECT id, course, location FROM courses WHERE course LIKE '%Forex%' OR course LIKE '%forex%'"; $q

我有一个PHP脚本,用从数据库获得的结果填充下拉菜单。我遇到的问题是,下拉菜单中只显示最后一个结果。我认为这是因为每次运行时,获取所有结果的while循环都会覆盖存储字符串的变量

我曾试图找到一个解决办法来解决它,但最终陷入了一个没有解决办法的黑暗角落

Php代码:

$sql2 = "SELECT id, course, location FROM courses WHERE course LIKE '%Forex%' OR  course LIKE '%forex%'";
        $query2 = mysqli_query($link, $sql2);
            $opt = '<select id="Forex" name="Forex">';
            $opt1 = '<option value="">Select Forex Workshop</option>';



                while($result2 = mysqli_fetch_assoc($query2)){
                //I belief the $opt2 variable is overwritten every time the loop runs
                    $opt2 = '<option value="">'.$result2['course'].'</option>';
                    print_r($opt2);
                }
                $opt3 =  '</select>';
                return $opt.$opt1.$opt2.$opt3;  


}       
$sql2=“从课程中选择id、课程、位置,如课程“%Forex%”或课程“%Forex%”;
$query2=mysqli\u查询($link,$sql2);
$opt='';
$opt1=‘选择外汇研讨会’;
而($result2=mysqli\u fetch\u assoc($query2)){
//我相信$opt2变量在每次循环运行时都会被覆盖
$opt2='.$result2['course'].';
打印(opt2);
}
$opt3='';
返回$opt.$opt1.$opt2.$opt3;
}       

我可能错了,问题可能在代码中的其他位置,但当我打印($result2)时,所有正确的结果都在那里

是的,您需要附加每个值:

$opt2 .= '<option value="">'.$result2['course'].'</option>';
$opt2.=''.$result2['course'].';
在开始循环之前,还应该初始化$opt2

$opt1 = '<option value="">Select Forex Workshop</option>';
$opt2 = "";
$opt1='选择外汇研讨会';
$opt2=“”;

只需添加一个

$opt2 .= '<option value="">'.$result2['course'].'</option>';
      ^
$opt2.=''.$result2['course'].';
^
您的变量正在重新初始化,应该将其连接起来

因此,最终代码应该是:

$opt2 = '';
while($result2 = mysqli_fetch_assoc($query2)){
                //I belief the $opt2 variable is overwritten every time the loop runs
                    $opt2 = '<option value="">'.$result2['course'].'</option>';
                    print_r($opt2);
                }
                $opt3 =  '</select>';
                return $opt.$opt1.$opt2.$opt3;
$opt2='';
而($result2=mysqli\u fetch\u assoc($query2)){
//我相信$opt2变量在每次循环运行时都会被覆盖
$opt2='.$result2['course'].';
打印(opt2);
}
$opt3='';
返回$opt.$opt1.$opt2.$opt3;

您需要将每个值与循环中的现有变量连接起来

**$opt2 .= '<option value="">'.$result2['course'].'</option>';**
**$opt2.='.$result2['course'].'**

$opt2='lool simple That That That That That great我现在可以看到所有结果,但仍然收到一条通知警告“通知:未定义变量:C:\xampp\htdocs\opes\course.php第21行中的opt2”@Tomazi,如果这对您有效,请将我的答案标记为解决方案。现在错误消失了,我通过初始化$opt2变量$opt2='';试图接受你的答案,但我不能尽快我会,因为你是第一个。有时候很可怕,一个简单的解决办法是:)事实上他不是第一个,我在他之前24秒发了帖子好的,我真的很抱歉仍然给了你一票:)并鼓励其他人也这样做,因为这两个答案都是正确的。谢谢你的帮助。别担心,没关系。:)