从数据库语法错误中使用(select = true)形式填充多个select

时间:2014-06-05 02:34:52

标签: php mysql multiple-select

我使用数据库中的值填充多选表单。我想要做的是我希望根据我提供的数据选择一些值。我的代码存在语法错误

这是我的代码:

<?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)

2 个答案:

答案 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>';