PHP不更新数据库

时间:2015-11-02 12:37:42

标签: php mysql

我在这里做错了什么。我无法弄清楚如何使更新块工作。当我点击“更新”按钮时,它会返回到edit.php但是带有

  

错误。错误是:注意:未定义的变量:POST in   第45行的C:\ xampp \ htdocs \ libSys \ edit.php

     

注意:未定义的变量:在C:\ xampp \ htdocs \ libSys \ edit.php中的POST   第46行

     

注意:未定义的变量:C:\ xampp \ htdocs \ libSys \ edit.php中的id   第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 ['author']分配变量时,会出现“未定义变量”错误...

我很感激任何帮助或解释。谢谢。

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

更改此行

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

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

答案 2 :(得分: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

答案 3 :(得分:0)

php POST全局变量的语法是$_POST而不是$POST

我猜您只是使用$id$_GET方法从表单中获取$_POST。 所以也请查看这些语法。

答案 4 :(得分:0)

代码中有一些错误。首先,$ _POST是php中的超全局。 Superglobals以美元符号和下划线开头。你忘记了下划线,这就是它未定义的原因。 重写为:

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

要在没有连接的情况下在引号内使用变量,可以使用“{”括号。但请记住,您不能对常量值执行相同操作。希望这会有所帮助:)