2016-11-06 3 views
1

안녕 얘들 아 내 데이터베이스의 단일 테이블에 몇 가지 체크리스트 값을 게시하려고 메신저하지만 그것은 단지 테이블에 하나 개의 값을 취 이 :쿼리 점검 및 사후 복수의 결과는

폼 :

<?php foreach($users as $user): ?> 
         <input type="checkbox" name="tipoinsertos" value="<?= $user['tipoinsertom']; ?>"> <?= $user['tipoinsertom']; ?> 
         <?php endforeach; ?> 

그리고 이것은 내 게시물의 형태 :

$data = array('tipoinsertos' => $_POST['tipoinsertos']); 

try { 

    $dbh = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 

    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $query = "INSERT INTO barrasinternas (tipoinsertos) VALUES (:tipoinsertos)"; 


    $sth = $dbh->prepare($query); 
    $sth->execute($data); 
    echo "&iexcl;A&ntilde;adida Exitosamente!"; 
    } 
catch(PDOException $e) 
    { 
    echo $sql . "<br>" . $e->getMessage(); 
    } 
$dbh = null; 
?> 

이 지문을 확인 :

http://imgur.com/a/WRhFd

그래서 나는 모든 세 값을 확인하지만, 단 하나의 내 테이블에 있었다.

+1

'이름 = "tipoinsertos은"'배열로 취급되어야한다'이름 = "tipoinsertos은 []"'내가 OP를 업데이트 한 –

답변

0

첫째, 당신이 $data을 받고있어 어떻게 그런 다음 표시되지 않습니다 귀하의 의견 이름 tipoinsertos[]

<input type="checkbox" name="tipoinsertos[]" ... 

에 대한 배열을 사용하지만 반복하는해야하고 루프에서 어떻게 든 그 쿼리를 실행. 하나의 큰 값 쿼리로 작성하거나 여러 값을 하나씩 반복적으로 사용하여 다른 명령문을 실행하십시오. Here's a possible solution : 내가 $ 데이터를 얻고 곳

<?php 

$users = [ 
    ['tipoinsertom' => 'Jonatan'], 
    ['tipoinsertom' => 'jeff'], 
    ['tipoinsertom' => 'joe'], 
]; 

?> 

<form method="POST"> 

<?php foreach($users as $user): ?> 
    <input type="checkbox" name="tipoinsertos[]" value="<?= $user['tipoinsertom']; ?>"> <?= $user['tipoinsertom']; ?> 
<?php endforeach; ?> 

    <input type="submit" value="Submit"/> 
</form> 

<?php 

// returns an intance of PDO 
// https://github.com/jpuck/qdbp 
$dbh = require __DIR__.'/tipoin_Dxa05i_A.pdo.php'; 


if(!empty($_POST['tipoinsertos'])){ 
    // prepare the query once 
    $query = "INSERT INTO barrasinternas (tipoinsertos) VALUES (:tipoinsertos)"; 
    $sth = $dbh->prepare($query); 

    // iterate through list 
    foreach($_POST['tipoinsertos'] as $tipoinsertos){ 
     $sth->execute(['tipoinsertos' => $tipoinsertos]); 
    } 

    // success 
    echo "&iexcl;A&ntilde;adida Exitosamente!"; 
    $dbh = null; 
} 
+0

는 .. I를 표시합니다 $ sth-> execute ([ 'tipoinsertos'=> $ tipoinsertos])에서 구문 오류가 발생합니다. 어쨌든 그것은 작동하지만 내 테이블에는 "배열"이 표시됩니다. –

+0

오른쪽, 왜냐하면 당신이 지금하고있는 방식은 오직 하나의 값만을위한 문자열에 암시 적으로 값의 전체 배열을 캐스팅하려고하기 때문입니다. 내 대답의 차이점을 확인하고 배열을 반복 실행할 때주의해야합니다. –

+0

고마움, 잠의 밤 이후, 나는 그것을 이해했다! –