2017-03-08 4 views
0

Ich habe 150 Variablen von $qA01_1 bis $qA30_5. Variablen können für jede Sitzung zufällig die Werte 0 oder 1 oder 5 haben. Ich möchte alle Variablen auswählen, die den Wert 1 haben und in die Datenbank speichern (Tabelle "eins"). Das Gleiche gilt für den Wert 0 (Tabelle "Null") und 5 (Tabelle "Fünf"). Können Sie mir bitte mit meinem Code helfen? Es tut mir leid für mein Englisch. Hoffe, alles ist klar.Wie bekomme ich alle Zahlen 1 aus dem Array und speichere sie in der DB?

Hier ist meine verkürzte Array:

<?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']; 
?> 

Mein verkürzten Code (funktioniert nicht) nur für Variablen $qA01_1 bis zu $qA01_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

Willkommen bei Stackoverflow! Sie scheinen sowohl 'MySQL' als auch' MySQLi' zu mischen, so dass Sie bei der Abfrage nichts einfügen. Bitte beachten Sie, dass MySQL ab PHP 5.5 nicht mehr unterstützt wird. Verwenden Sie stattdessen MySQLi (oder PDO): mysqli_connect ('localhost', 'root', '', 'db'); '. –

+0

Verbindung geändert. Neue Verbindung ist jetzt: $ connect = mysqli_connect ('localhost', 'root', '', 'db'); Aber immer noch nicht funktionieren. Ich denke, dass ich ein anderes Problem habe. – Nezdecek

Antwort

0

Sie Problem in Ihrer MySQL-Abfrage ist:

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. "') 

Die Syntax zum Einfügen lautet:

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

Dann würde ich eine foreach vorschlagen:

$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

Hallo Marteen van Middelaar. Ich denke in deinem Code ist ein kleines Problem. Ich bin mir nicht sicher mit der richtigen Position mit den Semikolons. – Nezdecek

+0

Ich habe die fehlenden Semikola hinzugefügt. –

+0

Ich habe mit deinem Vorschlag aber die ganze Zeit gespielt. Nichts ist in der Datenbank. Ich denke, wenn möglich, ersetzen $ _SESION mit nur $. – Nezdecek

Verwandte Themen