Как сохранить 3 списка переключателей в базе данных mysql в одном столбце, в разных строках?

Это мой 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

Обновление: предположим, что ключ $ содержит массив продуктов. (например, массив («рубашка», «брюки», «куртка»), и он отображается на значения переключателей.

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

Мы можем создать массив с именем $ prod_ratings для $ key и $ 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); }