여러

2013-03-29 2 views
-2
선택하여 HTML에서 MySQL을 삽입하는 방법

여러여러

이 내 코드의 HTML입니다 :

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(); 
: 이것은 내 PHP 코드는

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

입니다

+0

준비하는 Aaaaaaaah는 나의 눈을 피로하게하고있다. 제발, [올바르게 사용하고 문자열 보간을하지 않거나 전혀 사용하지 마십시오] (http://php.net/pdo) – Amelia

답변

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

이 각 선택 옵션

에 대한 항목을 삽입합니다

json_encode 및 json_decode도 사용할 수 있지만 제안하지는 않습니다.

+0

그냥 제안 했어요. – Amelia

+1

이것은 모든 항목에 대해 레코드를 생성하지 않기 때문에 gona가 작동하지 않습니다. – Toretto

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 이상,하지만이보다 효율적이라고 생각 할 수있다.

+0

답장에서 준비된 진술 문을 OP에 던지는 번거 로움을 덜어줍니다. ++. – Amelia

+0

그것 덕분에 ..... 각 CIN에 대한 업데이트를 만들고 싶고 다음과 같은 경우에 저장하려고합니다. web, java2EE, android ... how ?? 고마워요. – mamoud

+0

@mamoud 오, 당신이 저에게 이전에 말했을 텐데. 'INSERT INTO dev (cin, comp) VALUES (?,?)'와'$ params = array_merge ($ cin, implode (',', $ _POST [ 'domaine']))' –

0

$_POST["domaine"]배열이므로 "있는 그대로"로 지정하면 데이터베이스 레코드에 "배열"이됩니다. 데이터베이스에 삽입하기 전에 앱에 가장 적합한 "배열 -> 문자열"메서드 유형을 결정해야합니다.

가장 쉬운 방법은 join($sep, $_POST['domaine']) 또는 serialize($_POST['domaine'])입니다.