1

我在 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 是从其他工作正常的表单获得的查询结果。请注意,用户不需要一次向所有表单输入数据。他们可以选择一次填写的表格数量。

请帮我解决这个问题,并在此先感谢您。

4

2 回答 2

0

我认为问题出在 HTML 代码上,您有两个单独的表单:

<form method="post" action="input.php">  ---first one

<form method="post" action="input.php">   --- second one

因此,当您单击第一个表单的提交时,只会提交该表单的数据(此处,仅在cat_iddesc可用input.php

然后您尝试访问相同的其他表单值input.php$item_id=$_POST['item_id'];第一个表单的数据不存在)。

因此,您会收到此错误。

此外,如果您尝试提交第二个表单,您将收到$cat_id$cat_descr变量相同的错误。

因此,将所有数据保存在一个表单中。

于 2013-06-27T04:52:40.143 回答
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_*扩展已弃用,不再受支持。

于 2013-06-27T04:53:22.140 回答