我试图改写我的问题。
我有一个可以返回数千条记录的数据表,每条记录都有多列。第一列中有一个复选框,一旦用户检查它,然后单击一个按钮,与该行关联的CONTAINER_NUMBER将被发送到模板窗口以在表单中使用。
以下是复选框的代码:
echo "<tr><td><input type=\"checkbox\" id=\"{$Row[CONTAINER_NUMBER]}\" name=\"checkMr[]\" /></td>";
这是检索CONTAINER_NUMBER并将其发送到模态窗口的JavaScript:
<script type="text/javascript">
$(function()
{
$('a').click(function()
{
var selectedID = [];
$(':checkbox[name="checkMr[]"]:checked').each(function()
{
selectedID.push($(this).attr('id'))
});
$(".modal-body .containerNumber").val( selectedID );
});
});
</script>
这是显示CONTAINER_NUMBER:
的模态窗口部分 <div class="modal-body">
<form action="" method="POST" id="serviceModalForm" name="serviceModalForm">
<input type="text" name="containerNumber" id="containerNumber" class="containerNumber">
这是PHP的一部分,它采用id =“containerNumber”并将其转换为PHP变量。之后,有一个INSERT语句将containerNumber插入数据库表:
<?php
$container = $_POST['containerNumber'];
if(isset($_POST['submit'])){
$container = mysql_real_escapse_string(stripslashes($container));
$sql = "INSERT INTO myTable (container_num) VALUES ('$container')";
if(mysql_query($sql)){
echo "Insert complete";
}
else {
echo "Insert was not completed";
}
?>
这段代码很好。它运作良好。当用户选中一个复选框时,它会执行它应该执行的操作。当用户检查多个复选框时,它不起作用。
基本上,从我一直在研究的是,我需要将记录与变量$ container分开,因为该变量中可能有多个容器,这就是为什么当有多个容器时查询不起作用的原因选择了集装箱号码。
我需要能够分隔容器编号并将它们存储在数组或其他内容中。查询将分别读取每条记录,并为每条记录生成多个INSERT语句。
我已经多次尝试创建一个数组并获取sql语句来识别它,但是都没有成功。我不确定我是否将阵列放在正确的位置。我不确定在容器被发送到模态窗口之前是否必须在javascript中完成。
我知道我需要利用FOREACH循环来完成数组,但就像我说的那样,我不确定数组在代码中的位置。
请帮忙。我知道我需要学习PDO或MYSQLI。我一定会在我的下一个应用程序中使用PDO或MYSQLI。在那之前,请帮我解决这个问题。
谢谢你,抱歉这么多措辞。
答案 0 :(得分:1)
您的containerNumber将作为js数组中的转换字符串发布。像id1,id2,id3 [...]
这样的东西在您的PHP代码中,将$ container转换回数组($containerArray = explode(",", $container)
)并动态构造sql以在单个查询中添加所有行,以便该语句变为类似
INSERT INTO myTable (container_num) VALUES ('$containerArray[0]'), ('$containerArray[1]')[...]