我使用数据库中的值填充多选表单。我想要做的是我希望根据我提供的数据选择一些值。我的代码存在语法错误
这是我的代码:
<?php
$des_pos_id = $_POST['des_pos'];
$test_tags = $_POST['test_tag_arr'];
$test_tag=explode(',',$test_tags);
$sql4 = "SELECT _id, score_type from test_category where sub_code='$des_pos_id'";
$sel4 = mysqli_query($connect,$sql4);
while($row4 = mysqli_fetch_assoc($sel4)){
$option1 .= '<option value = "'.$row4['_id'].'"'echo in_array($row4['_id'], $test_tag) ? 'selected="true"' : null;'>'.$row4['score_type'].'</option>';
}
$output = "<select name='test_tags[]' id='test_tags[]' multiple>";
$output .= $option1;
$output .= '</select> ';
echo $output;
exit;
?>
这是错误消息:
语法错误,/ Applications/XAMPP/xamppfiles/htdocs/temp/esco-quiz/controller/script_controller.php中的意外'echo'(T_ECHO)
答案 0 :(得分:1)
戈登·林诺夫告诉
注意:因为Echo是一种语言结构而不是函数,所以不能使用变量函数调用它。 Manual
Echo doent会返回任何内容,因此您无法使用内联,就像您正在使用.$row4['_id'].'"'echo in_array($row4['_id'],
这里删除回声一样
你的代码很容易被sql注入...并且使用mysqli扩展并不意味着你是安全的sql注入你需要正确地逃避/清理所有请求
所以要么使用mysqli_real_escape_string
,要么使用预备语句
(优于)
答案 1 :(得分:0)
我认为问题在于这一行:
$option1 .= '<option value = "'.$row4['_id'].'"'echo in_array($value4['_id'], $test_tag) ? 'selected="true"' : null;'>'.$row4['score_type'].'</option>';
我不确定你真正想要的是什么。也许:
$option1 .= '<option value = "'.$row4['_id'].'"';
echo in_array($value4['_id'], $test_tag) ? 'selected="true"' : null;'>'.$row4['score_type'].'</option>';