使用“;回声;将字符串分配给变量失败时


Using "echo" when assigning string to a variable failing

我正在尝试编写一个php脚本,该脚本从数据库中获取一个值,并将其设置为名为gender的下拉列表。我已经写了以下代码:

  while($row = mysqli_fetch_assoc($result))
        { 
    $gender = $row['gender'];
    $output.= "Gender: <select name='gender'>   
<option value='0' ".if ($gender != 'M' || $gender !='F') { echo ('selected="selected"');}.">Select gender</option> 
<option value='M' ". if ($gender == 'M') { echo ('selected="selected"');}.">Male</option>  
<option value='F' ". if ($gender == 'F') { echo ('selected="selected"');}.">Female</option></select>";
    }

由于echo语句(echo ('selected="selected"')),我得到了一个服务器错误:

The website encountered an error while retrieving http://localhost/search.php. It may be down for maintenance or configured incorrectly.

解决方案是什么?

您可以执行一个简单的比较函数,通过比较两个参数来返回选择字符串:

function selectGender($gender,$out=false)
    {
        // You may not need these 3 lines if $gender is either empty, M, or F //
        $filter = array('M','F');
        if(!in_array($gender,$filter))
            $gender = false;
        if($gender == $out)
            return ' selected="selected"'; 
    }
while($row = mysqli_fetch_assoc($result)){ 
    $gender =  $row['gender'];
    $output.= "Gender: <select name='gender'>   
<option value='0'".selectGender($gender).">Select gender</option> 
<option value='M'".selectGender($gender,'M').">Male</option>  
<option value='F'".selectGender($gender,'F').">Female</option></select>";
}

好吧,这里最好的选择就是删除问题的根源,使其成为if语句:

if ($gender != 'M' && $gender != 'F') {
    output .= "...Enter he html with he generic answer selected...";
}
else if ($gender == 'M') {
    output .= "...Enter html with Male selected...";
else {
    output .= "...Enter html with Female selected...";
}

它可能有点笨重,但它能胜任工作。