我在PHP编码方面的表现不是很好。我有一个php接口(代码:insert.php),它有四种形式,用于将数据输入到我的数据库中的四个不同的表,并且表单的数据输入彼此独立。但是,当我向表单输入数据时,它会导致“未定义的索引错误”指向与接口中的另一个表单相关的两个变量。而且,数据不会输入到数据库中的表中。并非所有形式都会导致此错误。他们工作正常。
这是'insert.php'的代码,我需要插入数据。
<form method="post" action="input.php">
<tr>
<td>ID</td>
<td><input type="text" name="cat_id" size="40">
</td>
</tr>
<tr>
<td>Description</td>
<td>
<textarea NAME="desc" COLS=31 ROWS=6></textarea>
</td>
</tr>
<tr>
<td>
</td>
<td align="right">
<input type="submit" name="submit" value="Done">
</td>
</tr>
这是'insert.php'中的代码,与。
相关的错误变量<form method="post" action="input.php">
<tr>
<td>ItemID</td>
<td><input type="text" name="item_id" size="40">
</td>
</tr>
<tr>
<td>EPF</td>
<td><input type="text" name="epf" size="40">
</td>
</tr>
<tr>
<td>Quantity</td>
<td><input type="text" name="quan" size="40">
</td>
</tr>
<tr>
<td>Date</td>
<td><input type="date" name="date" size="40">
</td>
</tr>
<tr>
<td>
</td>
<td align="right">
<input type="submit" name="submit" value="Done">
</td>
</tr>
这是'input.php'中的代码。
<?php
$cat_id=$_POST['cat_id'];
$cat_descr=$_POST['desc'];
$query_cat = "INSERT INTO 'category' ( id, description)
VALUES ('$cat_id','$cat_descr')" or die (mysql_error());
$result_cat = mysql_query($query_cat);
?>
<?php
$item_id=$_POST['item_id'];
$epf2=$_POST['epf'];
$quan=$_POST['quan'];
$date=$_POST['date'];
$query_itemEmp = "INSERT INTO 'emp_div_item' ( epf, item ,quantity, date)
VALUES ('$epf2','$item_id','$quan','$date')" or die (mysql_error());
$result_itemEmp = mysql_query($query_itemEmp);
?>
<?php
if( $result_emp || $result_cat || $result_item || $result_itemEmp){
echo("<br>Input data is succeed");
} else{
echo("<br>Input data is fail");
}
?>
错误指出的变量是$ quan和$ date .. $ result_item和$ result_emp是从其他表单获得的查询结果正常工作。请注意,用户不需要一次向所有表单输入数据。他们可以选择一次填写的表格数量。
请帮助我解决这个问题并提前感谢你。
答案 0 :(得分:0)
我认为问题出在HTML代码上,你有两种不同的形式:
<form method="post" action="input.php"> ---first one
<form method="post" action="input.php"> --- second one
因此,当您点击第一个表单的提交时,只会提交该表单的数据(此处cat_id
只有desc
和input.php
可用)
然后,您尝试访问同一input.php
($item_id=$_POST['item_id'];
中的其他表单值,这与第一个表单的数据不相同。
因此你得到了这个错误。
此外,如果您尝试提交第二个表单,则$cat_id
和$cat_descr
个变量会出现同样的错误。
因此,请将所有数据保存在一个表单中。
答案 1 :(得分:0)
就您的查询而言:不要在数据库标识符周围加上引号。如果需要,请使用滴答声。
那就是说改变
$query_cat = "INSERT INTO 'category' (id, description) VALUES ('$cat_id','$cat_descr')" or die (mysql_error());
^ ^
到
$query_cat = "INSERT INTO category (id, description) VALUES ('$cat_id','$cat_descr')" or die (mysql_error());
和
$query_itemEmp = "INSERT INTO 'emp_div_item' (epf, item ,quantity, date) VALUES ('$epf2','$item_id','$quan','$date')" or die (mysql_error());
^ ^
到
$query_itemEmp = "INSERT INTO emp_div_item (epf, item ,quantity, date) VALUES ('$epf2','$item_id','$quan','$date')" or die (mysql_error());
旁注:您当前状态的代码容易受到sql注入攻击。使用mysqli或PDO学习和使用预准备语句。不推荐使用mysql_*
扩展程序,不再支持该扩展程序。