2016-11-06 3 views
1

こんにちはみんなは次のようにそれをやって...クエリのチェックリストとMySQLでのテーブルにポスト複数の結果

イムを私のデータベース内の単一のテーブルにいくつかのチェックリスト値を投稿しようとしているが、それが唯一のテーブルに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

は、だから私はすべての3つの値をチェックするが、一つだけは、私のテーブルにありました。

+1

'名= "tipoinsertosは、"'配列 '名前= "tipoinsertos []" 私は$データを取得しています場所を示すためにOPを更新しました' –

答えて

0

まず、次にあなたが$dataを取得している方法を示していないが、あなたはループの中で何とかそのクエリを反復して実行する必要がtipoinsertos[]

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

ご入力名の配列を使用します。 1つの大きな値のクエリに組み立てるか、1つの値を何度も何度も繰り返して別のステートメントを実行します。 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])に構文エラーがあります。 何とかそれは働いていましたが、私のテーブルには "Array"と表示されています。 –

+0

右、あなたが今やっているやり方は、暗黙のうちに値の配列全体を1つの値だけを対象とした文字列にキャストしようとしているからです。私の答えの違いを見て、実行時に配列をどのように反復処理するかに注目してください。 –

+0

ありがとう、睡眠の夜の後、私はそれを考え出した! –

関連する問題