2012-04-07 97 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