2012-04-09 79 views
0

再次我試圖研究PHP的MySQL,似乎我想盡一切辦法來解決這個問題..但它似乎作爲一個初學者代碼在互聯網並沒有幫助..我真的不能更新數據庫中的記錄。需要幫助每一個:)更新數據庫中的記錄不工作

<html> 
<body> 
<?php 
$db = mysql_connect("localhost", "root"); 
mysql_select_db("dbtry",$db); 
$id = isset($_GET['id']) ? $_GET['id'] : null; 
$submit = isset($_POST['submit']); 
if ($id) { 
if ($submit) { 

     $result = mysql_query("select * from employees where id = " . mysql_real_escape_string($_GET['id'])); 
     $row = mysql_num_rows($result); 

if ($myrow != 0) { 
mysql_query ("UPDATE employees SET firstname='$first',lastname='$last',address='$address',position='$position' WHERE id = '$id'"); 

} 


echo "Thank you! Information updated.\n"; 
} else { 
// query the DB 
$result = mysql_query("SELECT * FROM `employees` WHERE `id` = " . mysql_real_escape_string($_GET['id']), $db); 

$myrow = mysql_fetch_array($result); 
?> 
<form method="post" 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> 
Address:<input type="Text" name="address" value="<?php echo $myrow["address"] 
?>"><br> 
Position:<input type="Text" name="position" value="<?php echo $myrow["position"] 
?>"><br> 
<input type="Submit" name="submit" value="Enter information"> 
</form> 
<?php 
} 
} else { 
// display list of employees 
$result = mysql_query("SELECT * FROM employees",$db); 
while ($myrow = mysql_fetch_array($result)) { 
printf("<a href=\"%s?id=%s\">%s %s</a><br>\n", $_SERVER['PHP_SELF'], $myrow["id"], 
$myrow["firstname"], $myrow["lastname"]); 
} 
} 
?> 
</body> 
</html> 
+0

在MySQL中有這樣的問題,通常也有助於說出表是什麼引擎類型(InnoDB?MyISAM?)。 – 2012-04-09 14:18:01

+0

我應該使用什麼類型的我使用innodb .. – helloworld22 2012-04-09 14:46:12

+0

您使用的類型取決於你想要做什麼。 – 2012-04-10 04:20:35

回答

0

通常當我遇到這個問題,這是因爲自動提交是關閉的,我忘了明確的告訴連接提交。

編輯:你有沒有試過這個:How can I implement commit/rollback for MySQL in PHP??根據您的設置,InnoDB可以設置爲自動關閉,這意味着您需要明確告訴MySQL在完成後提交更新。

0
mysql_query("UPDATE `employees` SET `firstname`='".$first."', `lastname`='".$last."', 
`address`='".$address."', `position`='".$position."' WHERE `id` = '".$id".' ; ", $db) or 
die(mysql_error()); 
1

有兩件事可能會導致您的問題:首先,您試圖設置的值是尚未定義的變量。我假設你發現的代碼是假設你註冊了全局變量,你真的不想這麼做!

第二個問題是,如果您確實註冊全局變量已啓用,則數據未被清理,因此引號可能會發送更新錯誤。

試試這個:

$first = mysql_real_escape_string($_POST['first']); 
$last = mysql_real_escape_string($_POST['last']); 
$address= mysql_real_escape_string($_POST['address']); 
$position = mysql_real_escape_string($_POST['position']); 

mysql_query ("UPDATE employees SET firstname='$first',lastname='$last',address='$address',position='$position' WHERE id = '$id'"); 

這至少應該讓你和運行。我強烈建議您使用MySQLi庫或PHP PDO,並考慮使用預處理語句來增加安全性。

+0

我已經嘗試過,但仍然沒有工作..有可能,這是我的電腦的安全或與我使用的服務器或瀏覽器,我嘗試添加,刪除,搜索和查看,代碼運行良好。但與編輯我真的面臨一個很大的困惑:) – helloworld22 2012-04-09 15:00:44

0

我認爲問題可能在於您連接到數據庫。 mysql_connect函數的第三個參數是一個密碼。因此這樣的:

$db = mysql_connect("localhost", "root"); 

應該是:

$db = mysql_connect("localhost", "root", "yourPassword"); 

這也將有很大的幫助,如果你發佈你做了什麼類型的錯誤。

0

您需要區分帖子並獲取。請按照下面的工作示例。它會將你整理出來:D

<html> 
<body> 
<?php 
$db = mysql_connect("localhost", "root",""); 
mysql_select_db("test",$db); 

if($_SERVER['REQUEST_METHOD']=='POST') 
{ 
    //SUBMIT FORM 
    $id=isset($_POST['id'])?$_POST['id']:0; 
    if ($id) { 
     $result = mysql_query("select * from parameter where id = " . mysql_real_escape_string($id)); 
     $rows = mysql_num_rows($result); 
     if ($rows != 0) { 
     mysql_query ("UPDATE parameter SET name='".$_POST['name']."',value='".$_POST['value']."' WHERE id = '".$id."'"); 
     echo "Thank you! Information updated.\n"; 
    } 
    } 
} 

if($_SERVER['REQUEST_METHOD']=='GET') 
{ 
    //SELECT WHERE ID=GER VAR AND DISPLAY 
    $id = isset($_GET['id']) ? $_GET['id'] :0;// 
    if ($id) { 
    // query the DB 
    $result = mysql_query("SELECT * FROM parameter WHERE `id` = " . mysql_real_escape_string($_GET['id']), $db); 
    $myrow = mysql_fetch_array($result); 
    ?> 
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']?>"> 
    <input type=hidden name="id" value="<?php echo $myrow["id"] ?>"> 
    First name:<input type="Text" name="name" value="<?php echo $myrow["name"] ?>"><br> 
    Last name:<input type="Text" name="value" value="<?php echo $myrow["value"] ?>"><br> 
    <input type="Submit" name="submit" value="Enter information"> 
    </form> 
    <?php 
    } 
    else { 
    // display list of employees 
    $result = mysql_query("SELECT * FROM parameter",$db); 
    while ($myrow = mysql_fetch_array($result)) { 
    echo "<a href='".$_SERVER['PHP_SELF']."?id=".$myrow['id']."'>".$myrow['name'].": ".$myrow['value']."</a><br>"; 
} 
} 
} 
?> 
</body> 
</html> 
+0

我會嘗試這一個..有困難的時間學習更新,因爲我真的不能在互聯網樣品:) – helloworld22 2012-04-09 15:03:26

+0

waaaa!感謝這個例子,我將用它作爲我未來程序的基礎..你回答了我2天的問題:) – helloworld22 2012-04-09 15:26:01

相關問題