如何存储3个单选按钮列表在mysql数据库中的单列,不同的行


How do store 3 radio button lists in mysql database in single column, different rows?

这是我的ratings.php (html代码)

<input type="radio" name="selectThree" value="1">
<input type="radio" name="selectThree" value="2">
<input type="radio" name="selectThree" value="3">
<input type="radio" name="selectThree" value="4">
<input type="radio" name="selectThree" value="5">
<input type="radio" name="selectTwo" value="1">
<input type="radio" name="selectTwo" value="2">
<input type="radio" name="selectTwo" value="3">
<input type="radio" name="selectTwo" value="4">
<input type="radio" name="selectTwo" value="5">
<input type="radio" name="selectOne" value="1">
<input type="radio" name="selectOne" value="2">
<input type="radio" name="selectOne" value="3">
<input type="radio" name="selectOne" value="4">
<input type="radio" name="selectOne" value="5">

因此,当用户选择该值时,它将生成以下代码插入数据库:

<?php
include_once "mysqli.connect.php";
include_once "config.php";
if(isset($_POST['Click']))      
{
$rating = explode($_POST['selectOne'], $_POST['selectTwo'], $_POST['selectThree']);
$_SESSION['commentInput'] = array();
$_SESSION['commentInput'][] = $_POST['comment'][0];
$_SESSION['commentInput'][] = $_POST['comment'][1];
$_SESSION['commentInput'][] = $_POST['comment'][2];
if(isset($_REQUEST["comment"]))
{
$merge = array_combine ($_SESSION['product'],$_SESSION['commentInput']);
foreach($merge as $key => $value)
{
$sqlComment = "INSERT into comment (comment, product) VALUES ('".$value."', '".$key."')";
$result = $mysqli->query($sqlComment);
}
echo"<script type='text/javascript'>alert('Thank you for your comment!' )</script>";
}
else
{
echo "<script type='text/javascript'>alert('Please comment!')</script>";    
}   
}

我想在mysql数据库中这样存储->

product|rating
--------------
shirt  | 2
pants  | 3
dress  | 5

但是现在它是这样存储的:

product|rating
--------------
shirt  | Array
pants  | Array
dress  | Array

在我使用这个之后->

$rating = explode($_POST['selectOne'], $_POST['selectTwo'], $_POST['selectThree']);
//mysql
$sqlRating = "INSERT into ratings (product, rating) VALUES ('".$key."', '".$rating."')";
$result = $mysqli->query($sqlRating);

我如何使值存储到mysql?请帮忙,谢谢!

你的$rating是一个数组

你应该存储像$rating[0]$rating[1]$rating[2]这样的值,所以要存储它们,你可以在php中选择或单击按钮管理它们,然后将它们存储在你的表

使用implode:

以逗号分隔
$rating = explode($_POST['selectOne'], $_POST['selectTwo'], $_POST['selectThree']);
//mysql
$sqlRating = "INSERT into ratings (product, rating) VALUES ('".$key."', '".implode(",",$rating)."')";
$result = $mysqli->query($sqlRating);

之后,您应该能够使用find_in_set在过滤数据时查看该列

试着把它放到foreach循环中,就像这样。

// create an array here that contains the key and the rating key=>rating and save it to $ratings array.
foreach($ratings as $key=>$rating){
   //mysql
   $sqlRating = "INSERT into ratings (product, rating) VALUES ('".$key."', '".$rating."')";
   $result = $mysqli->query($sqlRating);
}
顺便说一下,这里有一个关于发布单选按钮值的教程http://www.homeandlearn.co.uk/php/php4p10.html

更新:假设$key包含一个产品数组。(例如array('shirt', 'pants', 'jacket'),并将其映射到单选按钮的值。

'shirt' => $_POST['selectOne'];
'pants' => $_POST['selectTwo'];
'jacket' => $_POST['selectThree'];

我们可以为$key和$ratings创建一个名为$prod_ratings的数组

$ratings = array($_POST['selectOne'], $_POST['selectTwo'], $_POST['selectThree']);
$prod_ratings = array_combine($key, $ratings);

然后将数组的值插入到数据库中:

foreach($prod_ratings as $key=>$rating){
   //mysql
   $sqlRating = "INSERT into ratings (product, rating) VALUES ('".$key."', '".$rating."')";
   $result = $mysqli->query($sqlRating);
}