Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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 勾选多个复选框后,我会在屏幕上打印阵列_Php_Sql_Mysqli - Fatal编程技术网

Php 勾选多个复选框后,我会在屏幕上打印阵列

Php 勾选多个复选框后,我会在屏幕上打印阵列,php,sql,mysqli,Php,Sql,Mysqli,我已经使用论坛建立了一个复选框组,所有内容都在a创建的独立脚本上工作,但当我在选择多个复选框后将其添加到我的用户系统中时,我会得到一个数组,下面的列表应该是生产脚本 <?php session_start(); include 'dbconfig.php'; $chkbox = array('option1', 'option2', 'option3'); if (isset($_POST['submit'])) { $chkbox = $_POST['chkbox']; $chkN

我已经使用论坛建立了一个复选框组,所有内容都在a创建的独立脚本上工作,但当我在选择多个复选框后将其添加到我的用户系统中时,我会得到一个数组,下面的列表应该是生产脚本

<?php
session_start();
include 'dbconfig.php';
$chkbox = array('option1', 'option2', 'option3');
if (isset($_POST['submit']))
{
 $chkbox = $_POST['chkbox'];

 $chkNew = "";  

 foreach($chkbox as $chkNew1)  
   {  
      $chkNew .= $chkNew1 . ",";  
   }  


 $query = "INSERT INTO demo_table_5 (MultipleValue) VALUES ('$chkNew')";

 mysqli_query($conn,$query) or die(mysqli_error());

  }

?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>PHP Insert/Store multiple selected checkbox values in MySQL database</title>
</head>

<body>

<h2>PHP Insert multiple checkbox values in MySQL database</h2>
 <form method="post" action="">
 <table>
 <tr>
 <td><input type="checkbox" name="chkbox[]" value="option1"><label>option1</label></td>
 <td><input type="checkbox" name="chkbox[]" value="option2"><label>option2</label></td>
 <td><input type="checkbox" name="chkbox[]" value="option3"><label>option3</label></td>
 </tr>
 <tr>
 <td colspan="4"><input type="submit" name="submit" Value="submit"></td>
 </tr>
 </table>
 </form>

<?php
$sql = "SELECT MultipleValue FROM demo_table_5";
$result = mysqli_query($conn, $sql);

if ($result->num_rows > 0) {
    echo "<table><tr><th>Interests</th></tr>";
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<tr><td>".$row["MultipleValue"]."</td></tr>";
    }
    echo "</table>";
} else {
    echo "0 results";
}
$conn->close();
?> 

</body>
</html>
我向数据库中现有的userinfo表中添加了一列,并将其命名为multipleValue,并添加了以下行以更新数据库

MultipleValue       = '".$_POST['chkbox']."',
然后,我在个人资料页面中添加了以下内容

<?php
$sql = "SELECT MultipleValue FROM user_info";
$result = mysqli_query($conn, $sql);

if ($result->num_rows > 0) {
echo "<table><tr><th>Interests</th></tr>";
// output data of each row
while($row = $result->fetch_assoc()) {
    echo "<tr><td>".$row["MultipleValue"]."</td></tr>";
}
echo "</table>";
} else {
echo "0 results";
}
$conn->close();
?>

您正在数据库中插入一个连接字符串,如“option1、option2、option3”


通过SQL select语句检索数据将返回包含连接的一行,因为您的输入具有
name=“chkbox[]”
,这意味着
$\u POST['chkbox']
是一个包含所有复选框值的数组。在PHP中,当您尝试将数组用作字符串时,如

MultipleValue       = '".$_POST['chkbox']."',
数组被转换为字符串
“array”
。您需要使用
内爆
将其转换为逗号分隔的列表:

MultipleValue       = '".implode(',', $_POST['chkbox'])."',

但是,我建议您更改表的设计。在表格单元格中用逗号分隔的值表示列表是一种不好的方法,因为很难搜索和更新它们——例如,索引不能用于搜索列表中的单个值。您应该使用多对多表,其中每个用户+选项组合有一行。

因此,$row['MultipleValue']可能是一个数组本身。使用var_dump()或print_r()可以看到。您可能必须在while()中放置另一个循环…..是否最好像在生产环境中一样保持独立的数据库,它在生产环境中工作正常?同时,我收到无效参数错误警告:内爆():在第6行的/home/jktempla/public\u html/registration3.php中传递的参数无效。在editsi尝试了print\u r()和var\u dump()之后,无效参数已忘记保存。我得到print\r()警告:print\r()至少需要1个参数,第284行的/home/jktempla/public\u html/profile.php中给出了0警告:print\r()需要至少1个参数,第284行的/home/jktempla/public_html/profile.php中给出了0个兴趣数组现在排序为hun,但对于您的响应,ty非常感谢您的帮助和帮助:)
MultipleValue       = '".$_POST['chkbox']."',
MultipleValue       = '".implode(',', $_POST['chkbox'])."',