如何从html选择多个插入到mysql中

时间:2013-03-29 13:29:06

标签: php mysql

如何从HTML中选择多个

插入MySQL

这是我的代码HTML:

<select name="domaine[]" id="domaine" class="validate[required]" multiple>
            <option></option>
            <option value="WEB">WEB</option>
            <option value="Java2EE">Java2EE</option>
            <option value="android">android</option>
            <option value="VB.Net">VB.Net</option>
            <option value="iOS">iOS</option>
            <option value="C++">C++</option>
</select>

这是我的PHP代码:

try{
        $cdb=new PDO('mysql:host=localhost;dbname=source', 'root','');

}  catch (Exception $e){
    die("erreur".$e->getMessage());

}  
$cin=$_SESSION['cin'];

$rep=$cdb->prepare("insert into dev (cin,comp)values('$cin','".$_POST["domaine"]."')");
$rep->execute();

3 个答案:

答案 0 :(得分:2)

您使用PDO非常好,但您的代码仍然容易受到攻击。 VALUES需要多个参数。

if (isset($_POST['domaine']) && is_array($_POST['domaine'])) {
    //(?,?),(?,?),(?,?) for 3 domaine
    $values = implode(',', array_fill(0, count($_POST['domaine']), '(?,?)'));
    $query = "INSERT INTO dev (cin, comp) VALUES $values";
    $params = array();
    foreach ($_POST['domaine'] as $d) {
        array_push($params, $cin, $d);
    }
    $rep = $cdb->prepare($query);
    $rep->execute($params);
}

您还可以prepare一个INSERT语句并循环遍历execute,但我相信这会更有效。

答案 1 :(得分:0)

$_POST["domaine"]数组,因此将其“原样”放在数据库记录中会显示为“Array”。 您需要确定哪种类型的“array-&gt; string”方法最适合您的应用,并在插入数据库之前使用它。

最简单的方法是使用join($sep, $_POST['domaine'])serialize($_POST['domaine'])

答案 2 :(得分:-2)

foreach ( $_POST["domaine"] as $aSelectedOption){
$rep=$cdb->prepare("insert into dev (cin,comp)values('$cin','".$aSelectedOption."') ");
$rep->execute();
}

这将为每个选中的选项

插入一个条目

你也可以使用json_encode和json_decode,虽然我不会建议它。