2017-03-10 18 views
0

私はPHPの初心者です。問題をデータベースに書き込んでいます。私は変数を持つ配列を持っています。値1の変数はデータベースに保存する必要があります。他の変数の中には値0または5を持つものもあれば、1も言ったものがあります。変数とデータベースに条件を書き込む方法は?

アレイ:

<?php session_start();  
     $qA01_1 = $_SESSION['qA01_1'];  
     $qA01_2 = $_SESSION['qA01_2']; 
     $qA01_3 = $_SESSION['qA01_3']; 
     $qA01_4 = $_SESSION['qA01_4']; 
     $qA01_5 = $_SESSION['qA01_5']; 

     $qA02_1 = $_SESSION['qA02_1'];  
     $qA02_2 = $_SESSION['qA02_2']; 
     $qA02_3 = $_SESSION['qA02_3']; 
     $qA02_4 = $_SESSION['qA02_4']; 
     $qA02_5 = $_SESSION['qA02_5']; 

     $qA03_1 = $_SESSION['qA03_1'];  
     $qA03_2 = $_SESSION['qA03_2']; 
     $qA03_3 = $_SESSION['qA03_3']; 
     $qA03_4 = $_SESSION['qA03_4']; 
     $qA03_5 = $_SESSION['qA03_5']; 

     $qA04_1 = $_SESSION['qA04_1'];  
     $qA04_2 = $_SESSION['qA04_2']; 
     $qA04_3 = $_SESSION['qA04_3']; 
     $qA04_4 = $_SESSION['qA04_4']; 
     $qA04_5 = $_SESSION['qA04_5']; 

     $qA05_1 = $_SESSION['qA05_1'];  
     $qA05_2 = $_SESSION['qA05_2']; 
     $qA05_3 = $_SESSION['qA05_3']; 
     $qA05_4 = $_SESSION['qA05_4']; 
     $qA05_5 = $_SESSION['qA05_5']; 
?> 

、ここでは(動作しない)状態でデータベースに書き込むための私の試みです:

$connect = mysqli_connect('localhost', 'root', 'pass', 'database'); 
     $varValue = 1; 
     $values = []; 
     foreach([1,2,3,4,5] as $index) { 
      if(['$qA01_'.$index] == 1) { 
       $values[] = "('$qA01_{$index}')"; 
      }; 
     } 
     $query = "INSERT INTO table ($varValue) VALUES ". implode(',',$values); 
     mysqli_query($connect, $query); 

あなたは、私が正しいコードを喜ば助けてくださいことはできますか?

Here is old table where are together value 0, 1, 5.

そして今、私は3つのテーブルを持っていると思います。 1番目の値は「tableOK」、2番目は値5「tableNOK」、3番目は情報テーブル「tableinfo」です。新しい構造のために

Three new tables created in Excel and my wishes in phpMyAdmin (my proposal)

答えて

0

、デフォルトでフィールドに値0を持っていると仮定:

$connect = mysqli_connect('localhost', 'root', 'pass', 'database'); 
if (mysqli_connect_errno()) 
    echo "Error connection: (" . mysqli_connect_errno().")"; 

$values = []; 
$fields = []; 
for($i=1;$i<=30;$i++) 
{ 
    foreach([1,2,3,4,5] as $index) 
    { 
     if(${'qA'.str_pad($i, 2, "0", STR_PAD_LEFT).'_'.$index} == 1) 
     { 
      $values[] = ${'qA'.str_pad($i, 2, "0", STR_PAD_LEFT).'_'.$index}; 
      $fields[] = 'qA'.str_pad($i, 2, "0", STR_PAD_LEFT).'_'.$index; 
     } 
    } 
} 
$query = "INSERT INTO tableOK(".implode(',',$fields).") VALUES (". implode(',',$values).")"; 

if(! mysqli_query($connect, $query)) 
{ 
    echo "Error query: ".mysqli_error($connect) 
} 

これは$qA30_...にすべて$qA01_...をチェックします。

+0

Nerea様、あなたの提案を「条件付きの場合」に置き換えようとしましたが、データベースに保存されていないものはありません。最後の2行に問題はありますか? – Nezdecek

+0

あなたのクエリ 'INSERT INTO table($ varValue)'に@Nezdecek 'データベースのフィールド名の' $ varValue'を変更しようとします。また、テーブルの名前をwordテーブルに変更していることを確認してください。まず、if条件に入ることを確認します。それでもまだ動作しないなら、 'echo $ query'の結果を投稿してください。 – Nerea

+0

私は答えを更新しました。データベースに '' $ qA01 _ '。$ index'の値を保存したいと思ったので、この変数をテキストとして保存したいと思っています。 – Nerea

関連する問題