2015-11-02 2 views
1

Что я здесь делаю неправильно. Я не могу понять, как сделать блок обновлений. Когда я нажимаю кнопку «Обновить», он возвращается к edit.php, но сPHP не обновляет строки в базе данных

ошибки. Ошибки: Примечание: Undefined переменной: POST в C: \ XAMPP \ HTDOCS \ libSys \ edit.php на линии 45

Примечание: Undefined переменной: POST в C: \ XAMPP \ HTDOCS \ libSys \ edit.php на линия 46

Примечание: неопределенные переменные: идентификатор в 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, что вы используете.

И я думаю, вы получаете $id из формы, используя метод $_GET или $_POST. Итак, проверьте эти синтаксисы.

+0

мой плохой. Опечатная ошибка. Однако я не могу найти ошибку в форме. Единственная проблема теперь - строка 48. Я не знаю, почему она не может распознать значение id. Как это исправить? Благодарю. – p3ace

+0

еще один тип ошибка @jordan. Вы не закрывали двойные кавычки перед '$ id' в инструкции sql. Попробуйте переписать инструкцию с соответствующим синтаксисом. – 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

Смежные вопросы