2012-04-07 101 views
1

我正在学习php,并且在更新数据库中的记录时遇到了麻烦,这里是我的代码。每当我键入?id = 14或任何数字对应数据库中的记录时没有在文本框中显示任何记录。我没有错误,但事实是它不显示录音功在php中更新记录我的sql

<HTML> 
<?php 
$submit = isset($_POST['submit']); 
$update = isset($_POST['update']); 
$id = isset($_GET['id']); 

if($submit) 
{ 
    $first = $_POST['first']; 
    $last = $_POST['last']; 
    $nickname = $_POST['nickname']; 
    $email = $_POST['email']; 
    $salary = $_POST['salary']; 

$db = mysql_connect("localhost", "root",""); 
mysql_select_db("dbtry",$db); 
$sql = "INSERT INTO personnel (firstname, lastname, nick, email, salary) VALUES ('$first','$last','$nickname','$email','$salary')"; 
$result = mysql_query($sql); 
echo "Thank you! Information entered.\n"; 
} 
else if($update) 
{ 
    $first = $_GET['first']; 
    $last = $_GET['last']; 
    $nickname = $_GET['nickname']; 
    $email = $_GET['email']; 
    $salary = $_GET['salary']; 
$db = mysql_connect("localhost", "root",""); 
mysql_select_db("dbtry",$db); 
$sql = "UPDATE personnel SET firstname='$first',lastname='$last',nick='$nickname',email='$email',salary='$salary' WHERE id=$id"; 
$result = mysql_query($sql); 
echo "Thank you! Information updated.\n"; 
} 
else if($id) 
{ 
$db = mysql_connect("localhost", "root", ""); 
mysql_select_db("dbtry",$db); 
$result = mysql_query("SELECT * FROM personnel WHERE id=$id",$db); 
$myrow = mysql_fetch_array($result); 
?> 
<form method="get" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
<input type="hidden" name="id" value="<?php echo $myrow["id"]?>"> 
First name:<input type="Text" name="first" value="<?php echo $myrow['firstname'];?>"><br> 
Last name:<input type="Text" name="last" value="<?php echo $myrow['lastname'];?>"><br> 
Nick Name:<input type="Text" name="nickname" value="<?php echo $myrow['nick'];?>"><br> 
E-mail:<input type="Text" name="email" value="<?php echo $myrow['email'];?>"><br> 
Salary:<input type="Text" name="salary" value="<?php echo $myrow['salary'];?>"><br> 
<input type="Submit" name="update" value="Update information"></form> 
<?php 
} 
else 
{ 
?> 
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
First name:<input type="Text" name="first"><br> 
Last name:<input type="Text" name="last"><br> 
Nick Name:<input type="Text" name="nickname"><br> 
E-mail:<input type="Text" name="email"><br> 
Salary:<input type="Text" name="salary"><br> 

<input type="Submit" name="submit" value="Enter information"></form> 
<input type="Submit" name="update" value="Update information"> 
<? 
} 
?> 
</HTML> 

- :(

+0

,而你还在学习,我建议你跳过绳的转义的章节。寻找mysqli(介意我)并使用准备好的语句。 – 2012-04-07 15:42:01

回答

1

$id只包含事实$_GET['id']是否成立,而不是其实际值与此替换它:

$id = isset($_GET['id']) ? $_GET['id'] : null; 

此外,确保(使用htmlspecialchars)outputing之前,并把它变成你的数据库的查询文本之前(使用逃脱所有用户输入或甚至更好的PDO)。

1

与尝试测试:

$result = mysql_query("SELECT * FROM personnel WHERE id=$id",$db) OR DIE (MYSQL_ERROR()); 
+0

问题是$ id是他的情况下的一个布尔值,而不是实际值。 – 2012-04-07 15:43:13

+0

啊对了,没有看到isset(在前面 – mowgli 2012-04-07 15:45:08

+0

感谢您的帮助,我会记住每一个:) – helloworld22 2012-04-07 16:06:10

0

$id设置为truefalse符合5。替换:

$result = mysql_query("SELECT * FROM personnel WHERE id=$id",$db); 

else if($id)阻滞:

$result = mysql_query("SELECT * FROM `personnel` WHERE `id` = " . mysql_real_escape_strig($_GET['id']), $db); 
+0

嗯我有另一个问题..我现在可以查看文本框中的记录,但事情是记录是没有在数据库中更新..我可以看到,该网址显示的数据,我进入替换前一个..但我不更新数据库中:)再次感谢您的帮助 – helloworld22 2012-04-07 16:11:48

+0

@helloworld同样的问题:在' else if($ update)'block states'WHERE id = $ id'。将它替换为WHERE id = mysql_real_escape_string($ _ GET ['id'])''。并确保更新记录的URL包含'id'和'update'变量。 – bostaf 2012-04-07 16:37:17

+0

非常感谢..我认为在互联网教程并不真正帮助那些正在尝试学习PHP的初学者。 :) – helloworld22 2012-04-08 12:21:53