此代码以某种方式仅存储上一个文本框的值。当我们生成3个文本框时,只有第3个值存储在数据库中而不是全部。我想将所有生成的文本框值存储在数据库中
<?php if(isset($_POST['submit'])){
$num_cat = $_POST['num_cat'];
$text = $_POST['category'];
foreach ($text as $key) {
// echo $key."\n";
}
$insertquery = mysqli_query($con, "INSERT INTO accounts (accountusername, accountemail) VALUES('".$num_cat."', '".$key."')");
if(!$insertquery){
echo "Error".mysqli_error($con);
}
} ?>
<script type="text/javascript">
//when the webpage has loaded do this
$(document).ready(function() {
//if the value within the dropdown box has changed then run this code
$('#num_cat').change(function(){
//get the number of fields required from the dropdown box
var num = $('#num_cat').val();
var i = 0; //integer variable for 'for' loop
var textboxes = ''; //string variable for html code for fields
//loop through to add the number of fields specified
for (i=1;i<=num;i++) {
//concatinate number of fields to a variable
textboxes += 'Category'+i+': <input type="text" name="category[]' + i + '" placeholder = "category_' + i + '" /><br/>';
}
//insert this html code into the div with id catList
$('#catList').html(textboxes);
});
});
</script>
<form method="post" action="">
Number of fields required:
<select id="num_cat" name="num_cat">
<option value="0">- SELECT -</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<div id="catList"></div>
<input type="submit" name="submit" value="Submit"/>
</form>
答案 0 :(得分:0)
如果你更新你的javascript来写这个(从名称中删除' + i + '
):
textboxes += 'Category'+i+': <input type="text" name="category[]" placeholder = "category_' + i + '" /><br/>';
然后$_POST['category']
将是一个数组。然后,它取决于您希望如何存储值,但假设您需要三行,则需要执行此操作:
foreach ($_POST['category'] as $key) {
$insertquery = mysqli_query($con, "INSERT INTO accounts (accountusername, accountemail) VALUES('".$num_cat."', '".$key."')");
if(!$insertquery){
echo "Error".mysqli_error($con);
}
}
这解释为in the PHP manual。 请同时查看how can I prevent SQL-injection in PHP?,因为您当前的代码很容易受到简单攻击。