2017-03-08 4 views
0

私は$qA01_1から$qA30_5までの150の変数を持っています。変数は、セッションごとにランダムに0または1または5の値を持つことができます。私は値1を持ち、データベース(テーブル "1")に保存するすべての変数を選択したいと思います。値0(テーブル "ゼロ")と5(テーブル "5")についても同じです。私のコードで助けてくれますか?私は英語ですみません。すべてがはっきりしていることを望む。配列からすべての数値1を取得してDBに保存するにはどうすればいいですか?

ここに私の短縮配列されていますのみ$qA01_5までの変数$qA01_1ため

<?php 
session_start(); 
// variables from 
$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'] 
// up to 
$qA30_1 = $_SESSION['qA30_1'];  
$qA30_2 = $_SESSION['qA30_2']; 
$qA30_3 = $_SESSION['qA30_3']; 
$qA30_4 = $_SESSION['qA30_4']; 
$qA30_5 = $_SESSION['qA30_5']; 
?> 

マイ短縮コード、(動作しない):

<?php 
$connect = @MySQL_Connect('localhost', 'root', ' ', 'db'); 
$vars = get_defined_vars(); 
foreach ($vars as $varName => $varValue) { 
    if (strpos($varName, 'qA') !== false && $varValue === 1) { 
    mysqli_query($connect, "INSERT INTO one ((ifnull(qA01_1, 0) + ifnull(qA01_2, 0) + ifnull(qA01_3, 0) + ifnull(qA01_4, 0) + ifnull(qA01_5, 0)) VALUES ('" .$varName. "', '" .$varValue. "')"); 
    } 
} 
?> 
+2

のStackOverflowへようこそ!あなたは 'MySQL'と' MySQLi'の両方を混在させているように見えるので、あなたは本当に何も挿入しません。 mysqli_connect( 'localhost'、 'root'、 ''、 'db'); 'のようにMySQLi(またはPDO)を使用してください。 –

+0

接続が変更されました。新しい接続は今:$ connect = mysqli_connect( 'localhost'、 'root'、 ''、 'db');しかし、まだ動作しません。私は別の問題があると思います。 – Nezdecek

答えて

0

あなたの問題は、MySQLのクエリである:

INSERT INTO one 
    ((ifnull(qA01_1, 0) + ifnull(qA01_2, 0) + ifnull(qA01_3, 0) + ifnull(qA01_4, 0) + ifnull(qA01_5, 0)) 
VALUES 
    ('" .$varName. "', '" .$varValue. "') 

挿入構文は次のとおりです。

INSERT INTO table_name 
    (field1, field2,...fieldN) 
VALUES 
    (value1, value2,...valueN); 

その後、私はforeachのをお勧めしたい:

$varValue = 1; 
$values = []; 
foreach([1,2,3,4,5] as $index) { // or use range(1,5) 
    if($_SESSION['qA01_'.$index] == 1) { 
     $values[] = "('qA01_{$index}')"; 
    }; 
} 
$query = "INSERT INTO one (varValue) VALUES ". implode(',',$values); 
mysqli_query($connect, $query);   
+0

Hello Marteen van Middelaar。私はあなたのコードでは小さな問題だと思う。私はセミコロンで正しい位置ではわかりません。 – Nezdecek

+0

不足しているセミコロンを追加しました。 –

+0

私はあなたの提案と一緒に遊んだが、すべての時間の問題。データベースには何もありません。可能であれば$ _SESIONを$だけで置き換えることを考えています。 – Nezdecek

関連する問題