Php 使用多维数组从多个字段插入数据
我有一个表格,它实际上是一个表格,表格是动态的,因此表格可以由10到300行组成 表格:Php 使用多维数组从多个字段插入数据,php,mysql,arrays,multidimensional-array,Php,Mysql,Arrays,Multidimensional Array,我有一个表格,它实际上是一个表格,表格是动态的,因此表格可以由10到300行组成 表格: include("x.xxx"); $cxn = mysqli_connect($host,$user,$password,$dbname); $query = "SELECT * FROM `inspjc` ORDER BY `scaffreq_id`"; $result = mysqli_query($cxn,$query) or die ("Couldn't execute query.");
include("x.xxx");
$cxn = mysqli_connect($host,$user,$password,$dbname);
$query = "SELECT * FROM `inspjc` ORDER BY `scaffreq_id`";
$result = mysqli_query($cxn,$query)
or die ("Couldn't execute query.");
echo "<table align='center'><br>
<tr bgcolor='#8DB4E3'>
<th>X</th>
<th>Scaffold Req No</th>
<th>Elevation</th>
<th class='vertical'>Foundations</th>
<th class='vertical'>Ledgers</th>
<th class='vertical'>Face Brace</th>
<th class='vertical'>Plan Brace</th>
<th class='vertical'>Platforms</th>
<th class='vertical'>Mobiles</th>
<th class='vertical'>Uprights</th>
<th class='vertical'>Transoms</th>
<th class='vertical'>Transverse Braces</th>
<th class='vertical'>Ties</th>
<th class='vertical'>Safe Access</th>
<th class='vertical'>Signs</th>
<th>If Not Inspected<br>Supply a Reason</th>
</tr>";
while($row = mysqli_fetch_assoc($result))
{
extract($row);
echo "<tr>\n
<td><input type='checkbox' checked='checked' name='scaffreq_id[]' value='$scaffreq_id' /></td>\n
<td><center>$scaffreq_id</center></td>\n
<td><center>$level m</center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp1[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp2[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp3[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp4[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp5[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp6[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp7[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp8[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp9[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp10[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp11[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp12[]' value='y' /></center></td>\n
<td><center><p><input type='text' name='insp_reason[]' maxlength='255' size='45' value='$insp_reason'></p></center></td>\n
</tr>\n";
}
echo "</table><br>";
?>
以下是输入表单表的代码:
include("x.xxx");
$cxn = mysqli_connect($host,$user,$password,$dbname);
$query = "SELECT * FROM `inspjc` ORDER BY `scaffreq_id`";
$result = mysqli_query($cxn,$query)
or die ("Couldn't execute query.");
echo "<table align='center'><br>
<tr bgcolor='#8DB4E3'>
<th>X</th>
<th>Scaffold Req No</th>
<th>Elevation</th>
<th class='vertical'>Foundations</th>
<th class='vertical'>Ledgers</th>
<th class='vertical'>Face Brace</th>
<th class='vertical'>Plan Brace</th>
<th class='vertical'>Platforms</th>
<th class='vertical'>Mobiles</th>
<th class='vertical'>Uprights</th>
<th class='vertical'>Transoms</th>
<th class='vertical'>Transverse Braces</th>
<th class='vertical'>Ties</th>
<th class='vertical'>Safe Access</th>
<th class='vertical'>Signs</th>
<th>If Not Inspected<br>Supply a Reason</th>
</tr>";
while($row = mysqli_fetch_assoc($result))
{
extract($row);
echo "<tr>\n
<td><input type='checkbox' checked='checked' name='scaffreq_id[]' value='$scaffreq_id' /></td>\n
<td><center>$scaffreq_id</center></td>\n
<td><center>$level m</center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp1[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp2[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp3[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp4[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp5[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp6[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp7[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp8[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp9[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp10[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp11[]' value='y' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='insp12[]' value='y' /></center></td>\n
<td><center><p><input type='text' name='insp_reason[]' maxlength='255' size='45' value='$insp_reason'></p></center></td>\n
</tr>\n";
}
echo "</table><br>";
?>
x表示类型为class='checkbox'的输入类型,ID表示其ID键。
在提交时,我想将数据写入数据库
我尝试了一些循环选项,但我需要从php运行循环,而不是在查询中循环(这需要很长时间),特别是在选择了300行的情况下
php代码的基本支出:
$ID = $_POST[ID];
$a = $_POST[a];
$b = $_POST[b];
$c = $_POST[c];
$d = $_POST[d];
$e = $_POST[e];
$f = $_POST[f];
$g = $_POST[g];
$userData = array();
foreach ($ID as $newid)
{
$userData[] = "('" . $newid['ID'] . "',
'" . $newid['a'] . "',
'" . $newid['b'] . "',
'" . $newid['c'] . "',
'" . $newid['d'] . "',
'" . $newid['e'] . "',
'" . $newid['f'] . "',
'" . $newid['g'] . "')";
}
$query = "INSERT INTO `inspect` (`ID`,`a`,`b`,`c`,`d`,`e`,`f`,`g`) VALUES ";
$query .= implode(',',$userData);
但是,回显查询只给我“('0',0','0','0','0','0','0','0','0','0'),('0',…”,但是有确切的数据量(括号内)作为所选ID字段。更新 (哇,这是一个困难的问题):您正在将HTML表单中的所有输入字段定义为数组。您可以删除使它们成为数组的
[]
,也可以在insp
复选框中使用name=insp[]
。然后使用var\u dump($\u POST)输出您的提交内容
您将看到如何解析数组
或者创建一个嵌套数组。类似这样的操作将有助于:
while($row = mysqli_fetch_assoc($result)) {
extract($row);
echo "<tr>\n
<td><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][id]' /></td>\n
<td><center>{$scaffreq_id}</center></td>\n
<td><center>{$level} m</center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][a]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][b]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][c]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][d]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][e]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][f]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][g]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][h]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][i]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][j]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][k]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][l]' /></center></td>\n
<td><center><p><input type='text' name='items[{$scaffreq_id}][reason]' maxlength='255' size='45' value='Reason{$insp_reason}'></p></center></td>\n
</tr>\n";
}
警告:请注意,您的代码是不安全的,并且不适合SQL注入(请参阅)。请使用而不是
mysql()
函数!更新
(哇,这是一个困难的问题):您正在将HTML表单中的所有输入字段定义为数组。您可以删除使它们成为数组的[]
,也可以在insp
复选框中使用name=insp[]
。然后使用var\u dump($\u POST)输出您的提交内容
您将看到如何解析数组
或者创建一个嵌套数组。类似这样的操作将有助于:
while($row = mysqli_fetch_assoc($result)) {
extract($row);
echo "<tr>\n
<td><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][id]' /></td>\n
<td><center>{$scaffreq_id}</center></td>\n
<td><center>{$level} m</center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][a]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][b]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][c]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][d]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][e]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][f]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][g]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][h]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][i]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][j]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][k]' /></center></td>\n
<td><center><input type='checkbox' checked='checked' name='items[{$scaffreq_id}][insp][l]' /></center></td>\n
<td><center><p><input type='text' name='items[{$scaffreq_id}][reason]' maxlength='255' size='45' value='Reason{$insp_reason}'></p></center></td>\n
</tr>\n";
}
警告:请注意,您的代码是不安全的,并且无法接受SQL注入(请参阅)。请使用而不是
mysql()
函数!它不应该是$\u POST['ID']
而不是$\u POST[ID]
。另外,您的代码很奇怪,您将值分配给单独的变量,然后似乎期望它们立即出现在一个数组中。@Osuwariboy这不应该有什么区别,两者都应该可以工作。尽管如此,我已经回显了每个$\u帖子,它们都包含正确的数据…好的,$newid
实际上是一个包含a、b、c的数组,等等。这在你的代码中不是很清楚。但是,为什么你要在循环之前赋值而不使用变量呢?foreach($ID as$key=>$newid){$userData[]=”(“““$newid.”,“$a[$key]。$b[$key]..
@splash58,您给出的循环有助于显示每行的实际id,但所有a-g都设置为一,无论选择了什么…它不应该是$\u POST['id']
而不是$\u POST[id]
。另外,您的代码很奇怪,您将值分配给单独的变量,然后似乎期望它们立即出现在一个数组中。@Osuwariboy这不应该有什么区别,两者都应该可以工作。尽管如此,我已经回显了每个$\u帖子,它们都包含正确的数据…好的,$newid
实际上是一个包含a、b、c的数组,等等。这在你的代码中不是很清楚。但是,为什么你要在循环之前赋值而不使用变量呢?foreach($ID as$key=>$newid){$userData[]=”(“““$newid.”,“$a[$key]。$b[$key]..
@splash58,您给出的循环有助于显示每行的实际id,但无论选择了什么,所有a-g都设置为1…感谢您的输入,特别是关于PDO准备的语句。当我回显上述查询时,输出如下所示:INSERT INTOINSERT
(ID
,a
,b
,c
,d
,e
,f
,g
)值(数组,数组,数组,数组,数组,数组),感谢您的输入,特别是关于PDO准备的语句。当我回上述查询时,输出如下所示:插入inspect
(ID
,a
,b
,c
,d
,e
,f
,g
)值(数组,数组,数组,数组,数组,)