通过php将数据输入到特定的mysql数据库表,导致“未定义的索引错误”指向另一个表的变量

时间:2013-06-27 04:42:59

标签: php mysql

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

请帮助我解决这个问题并提前感谢你。

2 个答案:

答案 0 :(得分:0)

我认为问题出在HTML代码上,你有两种不同的形式:

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

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

因此,当您点击第一个表单的提交时,只会提交该表单的数据(此处cat_id只有descinput.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_*扩展程序,不再支持该扩展程序。