Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用多维数组从多个字段插入数据_Php_Mysql_Arrays_Multidimensional Array - Fatal编程技术网

Php 使用多维数组从多个字段插入数据

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.");

我有一个表格,它实际上是一个表格,表格是动态的,因此表格可以由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.");     

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 INTO
INSERT
ID
a
b
c
d
e
f
g
)值(数组,数组,数组,数组,数组,数组),感谢您的输入,特别是关于PDO准备的语句。当我回上述查询时,输出如下所示:插入
inspect
ID
a
b
c
d
e
f
g
)值(数组,数组,数组,数组,数组,)