2015-11-02 66 views
1

我在這裏做錯了什麼。我無法弄清楚如何使更新塊工作。當我點擊「更新」按鈕時,它會返回到edit.php但與PHP不更新數據庫中的行

錯誤。錯誤是:注意:未定義變量:POST在 C:\ XAMPP \ htdocs中\ LIBSYS \ edit.php第45行上

說明:未定義變量:POST在C:\ XAMPP \ htdocs中\ LIBSYS \ edit.php上 線46

說明:未定義變量:ID在C:\ XAMPP \ htdocs中\ LIBSYS \ edit.php上 線48

更新成功

線45,46,48具有

 echo $author = $POST['author']; //line 45 
     echo $isbn = $POST['isbn']; //line 46 

     $sql = "UPDATE booklist SET Author='$author', Title='title', ISBN = '$isbn' WHERE ID = '$id' "; //line 48 

edit.php的完整源代碼都低於:

<?php 
include('databaseConnection.php'); 
?> 

<html> 
<head> 
    <link rel="stylesheet" type="text/css" href="./css/librarySystem.css"> 
    <title> Edit Book Information </title> 
</head> 

<div> 

<?php 
if(isset($_REQUEST['edit'])) //FIRST IF 
{ 

    $id = $_REQUEST['edit']; 
    $sql_select = "SELECT * FROM booklist WHERE ID=$id"; 
    $result=mysql_query($sql_select); 

    // collect all the data using mysql_fetch_array and assign to our $variables 

    while($row = mysql_fetch_array($result)) 
    { 
     $id = $row['ID']; 
     $title = $row['Title']; 
     $author= $row['Author']; 
     $yearLevel = $row['YearLevel']; 
     $isbn = $row['ISBN']; 
    } 

    //displays form for user to edit book information 
    echo "<form method='POST' action='edit.php'>"; 
     echo "Enter New or Correct Title: <input type='text' name='title' value='$title' > <br />"; 
     echo "Enter New or Correct Author: <input type='text' name='author' value='$author'> <br />"; 
     echo "Enter New or Correct ISBN: <input type='text' name='isbn' value='$isbn' > <br/>"; 
     echo "<input type='submit' name='save' value='Update' > <br />"; 
    echo "</form>"; 
} //END 1st IF 

else if(isset($_POST['save']))  
{ 

     echo $title = $_POST['title']; 
     echo $author = $POST['author']; 
     echo $isbn = $POST['isbn']; 

     $sql = "UPDATE booklist SET Author='$author', Title='title', ISBN = '$isbn' WHERE ID = '$id' "; 
     $result = mysql_query($sql); 
      if($result == true) 
      { 
       echo "Successfully Updated" ; 
      } 
       //header('Location: ./booklist.php'); 
} 

?> 

我怎樣才能糾正更新塊。當我點擊「更新」但是不會真正更新該行時,它似乎會進入if(isset($ _ POST ['save']),請幫助我卡住了,我不明白爲什麼「當我有$ _ POST [‘作者’] ...

我會很感激任何幫助或解釋。謝謝。

+1

您的代碼是廣泛開放給SQL注入。你也使用不推薦的'mysql_ *'。使用'mysqli_ *'或'PDO'代替 – SuperDJ

回答

2

使用super global變量$_POST[]

echo $author = $_POST['author']; 
echo $isbn = $_POST['isbn']; 

之前更新到數據庫的使用mysql_real_escape_string

$author=mysql_real_escape_string($author), 
$isbn=mysql_real_escape_string($isbn)); 

$sql = "UPDATE `booklist` SET Author='".$author."', Title='title', ISBN = '".$isbn."' WHERE ID = $id"; 

注意

mysql已棄用mysqli OR PDO

+0

謝謝。但是,我無法找到表單上的錯誤。現在唯一的問題是第48行。我不知道爲什麼它不能識別id的價值。我如何解決它?謝謝。 – p3ace

+0

在你的窗體中創建一個隱藏字段'echo'
「;'並將你的id設爲'$ id = $ _POST ['id'] ;' – Saty

+1

謝謝你的幫助。我剛剛開始學習PHP,並且仍然讓自己熟悉語法。從stackoverflow社區的所有答案肯定幫助我學得更快。再次感謝。 – p3ace

0

更改分配變量未定義變量」錯誤彈出此行

echo $author = $POST['author']; 
echo $isbn = $POST['isbn']; 

echo $author = $_POST['author']; 
echo $isbn = $_POST['isbn']; 
+0

感謝您的幫助。我是PHP新手,仍然在學習它。 – p3ace

0

您有語法錯誤,您使用$ POST而不是$ _POST。

echo $author = $_POST['author']; //line 45 
echo $isbn = $_POST['isbn']; //line 46 

$sql = "UPDATE booklist SET Author='$author', Title='title', ISBN = '$isbn' WHERE ID = '$id' "; //line 48 
+0

感謝您的幫助。 – p3ace

0

爲PHP POST全局變量的語法是$_POST沒有$POST您正在使用。

而且我想你只能從$_GET$_POST方法獲得$id。 因此,請查看這些語法。

+0

我的不好。那裏有一個錯字錯誤。但是,我無法找到表單上的錯誤。現在唯一的問題是第48行。我不知道爲什麼它不能識別id的價值。我如何解決它?謝謝。 – p3ace

+0

多一個類型錯誤@jordan。在sql語句中,您沒有在'$ id'之前關閉雙引號。嘗試用正確的語法重寫語句。 – Swaps

+0

查詢可能像'$ sql =「UPDATE booklist SET Author ='」。$ author。「',Title ='title',ISBN ='」。$ isbn。「'WHERE ID =」。$ id;' – Swaps

0

代碼中有幾個錯誤。首先,$ _POST是一個超全球性的php。超大全盤以美元符號和下劃線開始。你忘了下劃線,這就是爲什麼它是未定義的。

echo $author = $_POST['author']; 
echo $isbn = $_POST['isbn']; 

其次,您使用的引號內的$ id變量:如 改寫。重寫線48:

$sql = "UPDATE booklist SET Author='{$author}', Title='title', ISBN = '{$isbn}' WHERE ID = '{$id}' "; //line 48

要使用引號內的變量無連接,您可以使用「{」支架。請記住,你不能用常數值做同樣的事情。希望這可以幫助:)

+0

感謝您的幫助 – p3ace