Php 如何从数组中获取所有数字1并将其保存到数据库中?
我有150个变量,从Php 如何从数组中获取所有数字1并将其保存到数据库中?,php,mysql,mysqli,Php,Mysql,Mysqli,我有150个变量,从$qA01_1到$qA30_5。对于每个会话,变量的值可以是0、1或5。我想选择所有值为1的变量并保存到数据库中(表“一”)。值0(表“0”)和值5(表“5”)也是一样。你能帮我写代码吗?对不起,我的英语不好。希望一切都清楚 这是我的缩写数组: <?php session_start(); // variables from $qA01_1 = $_SESSION['qA01_1']; $qA01_2 = $_SESSION['qA01_2']; $qA01_
$qA01_1
到$qA30_5
。对于每个会话,变量的值可以是0、1或5。我想选择所有值为1的变量并保存到数据库中(表“一”)。值0(表“0”)和值5(表“5”)也是一样。你能帮我写代码吗?对不起,我的英语不好。希望一切都清楚
这是我的缩写数组:
<?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'];
?>
您的问题出在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
从PHP5.5开始就不推荐使用,因此请改用MySQLi(或PDO):MySQLi\u connect('localhost','root','db'));
。连接已更改。新连接现在是:$connect=mysqli\u connect('localhost','root','db'));但仍然不起作用。我想我还有另一个问题。你好Marteen van Middelaar。我认为在你的代码中是一个小问题。我不确定分号的位置是否正确。我添加了缺少的分号。我一直在处理你的建议。数据库中没有任何内容。我想如果可能,用onl替换$_SESIONy$。
$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);