我有一张表格
<form action="inserir.php" method="POST">
<tr>
<td><INPUT type='checkbox' name='chk'/></td>
<td><input type='text' name='ppdata[$x]'/></td>
<td><input type='text' size='40' name='ppempresa[$x]'></td>
<td><input type='text' name='ppfuncao[$x]' size='40'></td>
</tr>`
</form>`
在我的代码中,用户可以向表中插入更多行,插入数据并将其发送到新文件(insert.php)
foreach ($_POST["ppdata"] as $dat){
echo $dat. ' ';
}
foreach ($_POST["ppempresa"] as $empresa){
echo $empresa. ' ';
}
foreach ($_POST["ppfuncao"] as $funcao){
echo $funcao. ' ';
}
$data = count($dat);
$emp = count($empresa);
$func = count($funcao);
if($data == $emp){
for($x = 0; $x < $emp; $x++){
$str[] = "('{$dat[$x]}','{$empresa[$x]}','{$funcao[$x]}','{$id}')";
}
$s = implode(',',$str);
$sql = mysql_query("INSERT INTO pp (data,empresa,descricao,id_user) VALUES $s;");
}
我只能为每个字段保存一个字符。 如果我这样做:
echo '$dat';
它将回显整个阵列。
如果我这样做:
echo '$dat[0]';
它只会显示字符串的第一个字母。如果我在输入上写'Hello',它只会显示'H'。
编辑:我需要在数据库中插入数据,具体取决于用户添加的行数。但是现在,数组只插入每个字段的最后一个字母的最后一个字母。
答案 0 :(得分:4)
让我们来看看写“Hello”时会发生什么。
发送以下POST数组:
$_POST = array(
"ppdata" => array(
"Hello"
)
);
现在,你运行它:
foreach ($_POST["ppdata"] as $dat){
echo $dat. ' ';
}
此时,$dat
等于"Hello"
。
值得注意的是,$dat
是字符串。这意味着$dat[0]
是字符串的第一个字符,即"H"
。这就是如何以字符数组的形式访问字符串。
您可能打算在$_POST['ppdata']
处使用$dat
(在count
中,在循环等中),因为这是您的数组。