如何从数组中获取所有数字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. "')");
}
}
?>
答
您的问题是在你的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);
欢迎的StackOverflow!你似乎在混合'MySQL'和'MySQLi',所以你查询不会实际插入任何东西。请注意''MySQL'从PHP 5.5开始不推荐使用,所以请使用MySQLi(或PDO):'mysqli_connect('localhost','root','','db');'。 –
连接已更改。新的连接现在是:$ connect = mysqli_connect('localhost','root','','db');但仍然无法工作。我认为我有另一个问题。 – Nezdecek