2012-07-11 81 views
2

我是PHP新手,在网上查看了最后一个小时后,我无法找到我的代码出了什么问题,所以我来找你。我试图有一个地方来更新从我收集的数据。我得到这个错误。未定义的索引:第12行中的/ Users/mm1/Desktop/php/backend form/edit_ac.php中的id。以下是我目前为止的内容。是否有人可以帮助..更新mysql的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(); 
?> 
+1

你确定你通过$ _GET而不是$ _POST传递ID吗? – Gntem 2012-07-11 17:57:59

+0

我已经尝试了两种方法.. – 2012-07-11 18:00:13

+0

点对点12. – DrinkJavaCodeJava 2012-07-11 18:01:00

回答

1

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

<input type="hidden" name="id" value="<?php print $rows['id'] ?>"> 
+0

这样做!!!!!!谢谢!!!! – 2012-07-11 18:19:34

+0

很高兴提供帮助。我可以看到你是一个新成员,所以我会提到习惯上接受解决你的问题的答案。这就像答案一边的小复选标记。具有较高的接受率有助于您获得未来的答案,并为参与该网站的答复者提供一份代表奖金。 – colonelclick 2012-07-12 16:39:28

0

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

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

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

您也可以使用了错误的超全局变量,像GeoPhoenix说,你确定这不是你要找的$_POST['id']

+0

我将其更改为$ _POST ..仍然无法正常工作。 – 2012-07-11 18:06:05

+0

定义:“仍然不工作”也许你传递错误的字段名称。 – 2012-07-11 18:09:19

+0

显示您的获取和帖子的html页面。 – DrinkJavaCodeJava 2012-07-11 18:09:35

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_number中提供了ID编号,而不仅仅是id。所以切换到$id=mysql_prep($_GET['id_number']);可能会得到更有效的结果。

由于您是PHP新手,我强烈建议您将PHP库从旧的mysql库改为mysqliPDO。人们所建议的变化可能会让你得到你期望的结果,但不能修复这个脚本所具有的多个SQL Injection vulnerabilities

0

我没有在您的窗体中看到任何名称为“id”的东西。

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

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

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

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

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

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

+0

谢谢,就是这样。 – 2012-07-11 18:30:29