Php 从多个复选框和文本字段插入值
我是PHP的初学者。我遇到了一个问题。我的想法是,我必须为选定的电影指定演员,并为每部电影添加一个角色。我需要从列表中选择几个值,并为每个字段添加描述。我的代码将所有选中的值添加到数据库中,但它会将文本字段中的值弄乱,选中的值与描述不匹配。我将非常感谢你的帮助! 我的代码: 表格:Php 从多个复选框和文本字段插入值,php,mysql,checkbox,insert,textfield,Php,Mysql,Checkbox,Insert,Textfield,我是PHP的初学者。我遇到了一个问题。我的想法是,我必须为选定的电影指定演员,并为每部电影添加一个角色。我需要从列表中选择几个值,并为每个字段添加描述。我的代码将所有选中的值添加到数据库中,但它会将文本字段中的值弄乱,选中的值与描述不匹配。我将非常感谢你的帮助! 我的代码: 表格: 使用mysql\u escape\u字符串($\u POST[''])而不是mysqlquery中的每个字段$\u POST[''']。未选中的值不会提交,复选框数量与文本框不相同。 您应该为输入名称数组指定相同的键
使用mysql\u escape\u字符串($\u POST[''])
而不是mysqlquery中的每个字段$\u POST[''']
。未选中的值不会提交,复选框
数量与文本框
不相同。
您应该为输入名称数组指定相同的键:
$i = 0;
while($sqlRow = mysqli_fetch_array($result, MYSQL_ASSOC)) {
echo "<tr>";
echo "<td>";
echo "<input type=\"checkbox\" name=\"checkbox[".$i."]\" value=\"" . $sqlRow['artistId'] . "\"/> " . $sqlRow['firstname'] . " " . $sqlRow['lastname'] . "</td><td><input type=\"text\" name=\"textbox[".$i."]\"/></td>";
echo "</tr>";
$i++;
}
如以下文件所述:
提交表单时,只有“开”复选框控件可以成为
换言之,浏览器将只提交那些已“选中”的复选框控件,但将提交每个文本框控件,而不管您希望它与之关联的复选框控件的状态如何
因此,除非选中所有复选框控件,否则PHP从表单提交中创建的数组$\u POST['checkbox']
和$\u POST['textbox']
将包含不同数量的元素,因此,具有任何给定索引的元素可能不匹配
有两种方法可以解决此问题:
如果未选中相应的复选框,则可以使用:这将阻止浏览器提交文本框,相应地,PHP中的数组将再次对齐(但是请注意,此解决方案取决于客户端脚本的可用性,您必须测试并处理此类脚本不可用的情况); 或
可以为控件提供显式索引,以确保它们始终对齐
您还应该仔细阅读正确的字符串转义(以及如果不这样做,您的应用程序将如何暴露于bug和常见的攻击向量):我完全推荐@的博客文章
特别是,正如他在文章中所描述的,您应该确保在传输到浏览器之前转义变量中的任何HTML(为了防止输出的文本包含在HTML中具有特殊含义的字符时出现错误,例如,不要建议使用弃用的。使用mysqli\u*tryif($\u POST){var_dump($_POST);/…
并在问题中添加结果没有意义结束打印“”;
内部if($_POST)
@Paul“dghhd”[“checkbox”]=>array(3){[0]=>string(2)“15”[1]=>string(1)“8”[2]=>string(2)“11”}[“textbox”=>array(15){[0]=>string(7)“sfgsdfg”[1]=>string(7)”asd”=>string(8)“asd”=>dfas”as8[3] =>字符串(0)”“[4]=>字符串(0)”“[5]=>字符串(0)”“[6]=>字符串(0)”“[7]=>字符串(0)”“[8]=>字符串(0)”“[9]=>字符串(0)”“[10]=>字符串(0)”“[11]=>字符串(0)”“[12]=>字符串(0)”[13]=>字符串(0)”“[14]=>字符串(0)”}[“提交”=>字符串(3)“添加”}错误:键“PRIMARY”的重复条目“11-14”这给了我一个错误:未定义的偏移量:0;未定义的偏移量:0;未定义的偏移量:1行上未定义的偏移量:3:$query=“插入$movies(movieCode,title,dateofisue,category,description,image)值(“.”“$\u POST['movieCode']”,“,“$\u POST['title']”,“,“$\u POST.”['dateofissue']。”、“$”邮政['category']。”、“$”邮政['desc']。”、“$”邮政['image1']。”)”;
if($_POST) {
$checkbox = $_POST['checkbox'];
$txt = $_POST['textbox'];
$len = sizeof($checkbox);
for($i = 0; $i < $len; $i++) {
$sqlqr = "INSERT INTO $role (artistId, movieCode, Description) VALUES ('" . $checkbox[$i] . "', '" . $_POST['moviecode'] . "', '" . $txt[$i] . "')";
mysqli_query($connect, $sqlqr);
}
$query = "INSERT INTO $movies(movieCode, title, dateOfIssue,category, description, image) VALUES ('" . $_POST['moviecode'] . "', '" . $_POST['title'] . "', '" . $_POST['dateofissue'] . "','" . $_POST['category'] . "', '" . $_POST['desc'] . "', '" . $_POST['image1'] . "')";
mysqli_query($connect, $query);
if(mysqli_query($connect, $query) || mysqli_query($connect, $sqlqr)) {
echo "<h4>1 record added</h4>";
}
else {
die('Error: ' . mysqli_error($connect));
}
print '</form>';
}
$i = 0;
while($sqlRow = mysqli_fetch_array($result, MYSQL_ASSOC)) {
echo "<tr>";
echo "<td>";
echo "<input type=\"checkbox\" name=\"checkbox[".$i."]\" value=\"" . $sqlRow['artistId'] . "\"/> " . $sqlRow['firstname'] . " " . $sqlRow['lastname'] . "</td><td><input type=\"text\" name=\"textbox[".$i."]\"/></td>";
echo "</tr>";
$i++;
}
$checkbox = $_POST['checkbox'];
$txt = $_POST['textbox'];
foreach ($checkbox as $key => $value)
$sqlqr = "INSERT INTO $role (artistId, movieCode, Description) VALUES ('" . $value . "', '" . $_POST['moviecode'] . "', '" . $txt[$key] . "')";
mysqli_query($connect, $sqlqr);
}