2

我是 PHP 新手,在网上看了最后一个小时后,我找不到我的代码有什么问题,所以我来找你。我试图有一个地方来更新我从一个收集的数据。我得到这个错误。未定义的索引:第 12 行 /Users/mm1/Desktop/php/backend form/edit_ac.php 中的 id。这是我目前所拥有的。有人可以帮忙吗..

<?php require("database.php"); ?>
<?php require("functions.php"); ?>

<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");


$id= mysql_prep($_GET['id']);
$last= mysql_prep($_POST['last']);
$first= mysql_prep($_POST['first']);


// update data in mysql database
$sql="UPDATE $tbl_name SET first='{$first}', last='{$last}' WHERE id='{$id}'";
$result=mysql_query($sql);

// if successfully updated.
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='edit_info.php'>View result</a>";
}
else {
echo "ERROR";
}
?>

这是表格(我知道这一切都不完整,我只是想让它先工作。)

<?php require("database.php"); ?>


<?php // Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// get value of id that sent from address bar
$id=$_GET['id'];

// Retrieve data from database
$sql="SELECT * FROM $tbl_name WHERE id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
?>


<form name="form1" method="post" action="edit_ac.php">
<table width="700" border="0" cellpadding="5">
<tr>
<td colspan="2" class="center"><h3>PARTICIPANT IDENTIFICATION</h3></td>
</tr>
  <tr>
  <td width="218">First</td>
    <td width="456"><input name="first" type="text" maxlength="50" id="first" value="<? echo $rows['first']; ?>" /></td>
  </tr>
   <tr>
  <td width="218">Last</td>
    <td width="456"><input name="last" type="text" maxlength="50" id="last" value="<? echo $rows['last']; ?>" /></td>
  </tr>
   <tr>
  <td width="218">Middles</td>
    <td width="456"><input name="middle" type="text" maxlength="50" id="middle" value="<? echo $rows['middle']; ?>"/></td>
  </tr>
  <tr>
  <td>Address</td>
    <td><input name="address" type="text" maxlength="50" id="address" value="<? echo $rows['address']; ?>"/></td>
  </tr>
  <tr>
  <td>City</td>
    <td><input name="city" type="text" maxlength="50" id="city" value="<? echo $rows['city']; ?>"/></td>
  </tr>
  <tr>
  <td>State</td>
    <td><input name="state" type="text" maxlength="15" id="state"  value="<? echo $rows['state']; ?>"/></td>
  </tr>
  <tr>
  <td>Zip</td>
    <td><input name="zip" type="text" maxlength="15" id="zip" value="<? echo $rows['zip']; ?>" /></td>
  </tr>
  <tr>
  <td>Home Phone</td>
    <td><input name="home_phone" type="text" id="home_phone" value="<? echo $rows['home_phone']; ?>" /></td>
  </tr>
  <tr>
  <td>Daytime Phone</td>
    <td><input name="daytime_phone" type="text" id="daytime_phone" value="<? echo $rows['daytime_phone']; ?>" /></td>
  </tr>
  <tr>
  <td>Email Address</td>
    <td><input name="email_address" type="text" id="email_address" value="<? echo $rows['email_address']; ?>" /></td>
  </tr>
  <tr>
  <td>Birthday</td>
    <td><input name="month" type="text" id="month" size="3" maxlength="2" value=""/> / <input name="day" type="text" id="day" size="3" maxlength="2" value=""/> / <input name="year" type="text" id="year" size="5" maxlength="4"  value=""/></td>
  </tr>
  <tr>
  <td>Social Security Number</td>
    <td><input name="ss_1" type="text" id="ss_1" size="5" maxlength="3" value=""/> - <input name="ss_2" type="text" id="ss_2" size="5" maxlength="2"  value=""/> - <input name="ss_3" type="text" id="ss_3" size="5" maxlength="4" value="" /></td>
  </tr>
  <tr>
    <td colspan="2" class="center"><h3>PHOTO IDENTIFICATION </h3></td>
    </tr>
  <tr> 
    <td>Type of ID</td>
    <td>
      <input type="text" name="type_of_id" id="type_of_id" value=""/></td>
  </tr>
    <tr>
    <td>ID Number</td>
    <td>
      <input type="text" name="id_number" id="id_number" value="" /></td>
  </tr>
    <tr>
    <td>Issuing Jurisdiction</td>
    <td><input type="text" name="issuing_state" id="issuing_state"  value=""/></td>
  </tr>
    <tr>
    <td>Expiration Date</td>
    <td><input type="text" name="expiration_date" id="expiration_date" value=""/></td>
  </tr>
     <tr>
    <td>Issue Date</td>
    <td><input type="text" name="issue_date" id="issue_date" value="" /></td>
  </tr>
   <tr>
    <td colspan="2" class="center"><h3>ESTABLISHING YOUR ACCOUNT</h3></td>
    </tr>
     <tr>
  <td colspan="2" class="center">Designate Account Type</td>
  </tr>
  <tr>
  <td>
  Acount Type
  </td>
  <td>
      <label>
        <input type="radio" name="traditional" value="1" id="traditional" />
        Traditional</label>
      <br />
      <label>
        <input type="radio" name="roth" value="1" id="roth" />
       Roth</label>
      <br />
      <label>
        <input type="radio" name="sep" value="1" id="sep" />
        SEP</label>
      <br />
        <label>
        <input type="radio" name="simple" value="1" id="simple" />
        SIMPLE</label>
      <br /></td>
  </tr>
  <tr>
  <td colspan="2" class="center">Fund Your Account</td>
  </tr>
   <tr>
  <td colspan="2"><input name="rollover" type="radio" value="1" id="rollover" />I will rollover cash from an existing IRA or qualified retirement plan
    </td>
  </tr>
   <tr>
  <td>Prior Custodian Plan Name</td>
  <td><input name="prior_plan_name" type="text" maxlength="50" id="prior_plan_name" value=""/></td>
  </tr>
   <tr>
  <td>Expected Rollover Amount</td>
  <td><input name="rollover_amount" type="text" maxlength="50" id="rollover_amount" value=""/></td>
  </tr>
   <tr>
  <td colspan="2"><input name="transfer" type="radio" value="1"  id="transfer" />    I will transfer assets from another IRA and have attached a TRANSFER AUTHORIZATION form </td>
  </tr>
   <tr>
  <td colspan="2"><input name="contribution" type="radio" value="1"  id="contribution"/>    I have attached a contribution check as follows</td>
  </tr>
   <tr>
  <td>IRA Cash Contribution for the Year</td>
  <td><input name="cash_contributions_1" type="text" id="cash_contributions_1" value=""/></td>
  </tr>
   <tr>
  <td>in the amount of</td>
  <td><input name="amount_1" type="text" id="amount_1" value=""/></td>
  </tr>
   <tr>
  <td>IRA Cash Contribution for the Year</td>
  <td><input name="cash_contributions_2" type="text" id="cash_contributions_2" value="" /></td>
  </tr>
   <tr>
  <td>in the amount of</td>
  <td><input name="amount_2" type="text" id="amount_2" value="" /></td>
  </tr>
   <tr>
  <td>Employer OR Employee (circle one) SEP/SIMPLE Contribution for the Year</td>
  <td><input name="employer_contributions" type="text" id="employer_contributions" value="" /></td>
  </tr>
    <tr>
  <td>in the amount of</td>
  <td><input name="amount_3" type="text" id="amount_3" value="" /></td>
  </tr>
   <tr>
   <td></td>
    <td style="text-align:right"><input type="submit" name="Submit" value="Submit"></td>
  </tr>
</table>
</form>

</table>
<?php
// close connection
mysql_close();
?>
4

4 回答 4

1

将 id 作为隐藏字段添加到表单中。

<input type="hidden" name="id" value="<?php print $rows['id'] ?>">
于 2012-07-11T18:13:07.000 回答
0

未定义的索引仅仅意味着某个数组的索引不存在。所以在这种情况下$_GET没有索引id

也许你应该检查变量是否在任何东西之前设置。

if(!empty($_GET['id']) && !empty($_POST['last']) && !empty($_POST['first'])){
    // other code
}

你也可能使用了错误的超全局,就像 GeoPhoenix 说的那样,你确定这不是$_POST['id']你要找的吗?

于 2012-07-11T17:59:51.337 回答
0

如果您没有在对页面的调用中包含参数,则会收到错误,因为您在前几行中将错误报告一直向上:

ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);

通常 PHP(以及因此的 PHP 教程)假设一个较低的设置 PHP 将抛出警告或忽略数组上的索引错误。因此,当你击中:

$id= mysql_prep($_GET['id']);
$last= mysql_prep($_POST['last']);
$first= mysql_prep($_POST['first']);

它会引发错误,但您的引用可能会认为它会悄悄地失败。

您的表单似乎提供了 ID 号,id_number而不仅仅是id. 所以切换到$id=mysql_prep($_GET['id_number']);可能会得到更有效的结果。

由于您是 PHP 新手,我还强烈建议您将 PHP 库从旧的 mysql 库更改为mysqliPDO。人们建议的更改可能会为您提供预期的结果,但不会修复此脚本具有的多个SQL 注入漏洞。

于 2012-07-11T18:07:33.017 回答
0

我在您的表单中没有看到任何名称为“id”的内容。

如果您使用 $_get['id'] 您必须有一个链接或提交按钮,该按钮会转移到一个看起来像这样的 url。

<a href="phpfile.php?id=PUT_VALUE_HERE> 

请注意,url 在问号后面有变量名 id,并且您告诉 = 后面的变量是什么。

否则,如果您不打算将变量放在 url 中。您使用 $_POST['id']。为了使 $_POST['id'] 工作,您需要在表单中输入一个将 name 属性设置为 id 的输入。例如

<input name="id" type="text">

我在您的表单中没有看到任何名称属性设置为“id”的内容。

于 2012-07-11T18:19:16.980 回答