Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从数组中获取所有数字1并将其保存到数据库中?_Php_Mysql_Mysqli - Fatal编程技术网

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

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_

我有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_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);