如何从数组中获取所有数字1并将其保存到数据库中?

如何从数组中获取所有数字1并将其保存到数据库中?

问题描述:

我有150个变量,从$qA01_1$qA30_5。对于每个会话,变量可以具有0或1或5的值。我想选择所有具有值1并保存到数据库(表“一”)的变量。值0(表格“零”)和5(表格“五”)相同。你能帮我用我的代码吗?我很抱歉我的英语。希望一切都清楚。如何从数组中获取所有数字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']; 
?> 

我的短代码,只为变量$qA01_1高达$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

欢迎的StackOverflow!你似乎在混合'MySQL'和'MySQLi',所以你查询不会实际插入任何东西。请注意''MySQL'从PHP 5.5开始不推荐使用,所以请使用MySQLi(或PDO):'mysqli_connect('localhost','root','','db');'。 –

+0

连接已更改。新的连接现在是:$ connect = mysqli_connect('localhost','root','','db');但仍然无法工作。我认为我有另一个问题。 – Nezdecek

您的问题是在你的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

你好Marteen van Middelaar。我认为在你的代码中是一个小问题。我不确定你的分号是否正确。 – Nezdecek

+0

我添加了缺少的分号。 –

+0

我已经玩过你的建议,但一直都是问题。数据库中什么都没有。我在想,如果可能的话只用$来替换$ _SESION。 – Nezdecek