2013-09-29 2 views
-1

Я пытаюсь обновить некоторые записи в моей базе данных по php. Это часть моего кода, который возвращает ошибку:Неопределенное уведомление переменной в php/mysql

<?php 
    //turn on error reporting 
    ini_set('display_errors',1); 
    error_reporting(E_ALL); 

    // Check if button name "Submit" is active, do this 
    if(isset($_POST['Submit'])) 
    { 
     $count=mysql_num_rows($result); 
     for($i=0;$i<$count;$i++) 
     { 

    if(isset($title[$i],$descr[$i],$price[$i],$cname[$i],$pid[$i])) 
      { 
       $query = " 
        UPDATE products 
        SET title='$title[$i]', 
         descr='$descr[$i]', 
         price='$price[$i]', 
         cname='$cname[$i]' 
        WHERE pid='$pid[$i]' 
       "; 

       $upd = mysql_query($query) or die(mysql_error()); 
      } 
      else 
      { 
       $upd = FALSE; 
       echo "One of the variables isn't set.\n<br/>"; 
      } 
     } 

     if($upd) 
     { 
      echo "Successful"; 
      echo "<BR>"; 
      //display_manager_menu(); 
     } 
     else { 
      echo "Something wrong"; 
     }  
    } 
    mysql_close(); 
    ?> 

возвращает: «Примечание: Undefined переменной: обн». Поскольку я установил $upd как результат mysql_query, я понятия не имею, почему я получаю это сообщение. Есть идеи?

+0

Изменение '$ upd = mysql_query ($ query);' to '$ upd = mysql_query ($ query) или die (mysql_error());' и посмотреть, что происходит не так. –

+0

Каково значение $ count? –

+0

@AmalMurali Спасибо за мгновенный ответ! Я попробовал, но, к сожалению, он возвращает то же самое – Suspicius

ответ

0

Изменение:

if($upd){ 

к:

if(isset($upd) && $upd){ 

Если $_POST['submit'] не установлен, переменная $upd не будет установлен, либо.

+3

Это не решает проблему - скорее ее скрывает. –

+0

Я избавился от уведомления. Но моя проблема существует, так как при нажатии кнопки «Отправить» я получаю многочисленные уведомления о неопределенных переменных «title», «price», 'descr',' cname' и 'pid' в моем $ query. – Suspicius

+0

Это означает, что ваши данные не отправляются, так как данные не назначаются этим переменным, и поэтому они не определены. Попробуйте var_dump ($ _ POST) и посмотрите, что вы получаете –

0

Проблема заключается в том, что $udp объявлен в условии if. Когда $_POST['Submit'] не установлен, то $udp не устанавливается. Вы можете решить эту проблему путем инициализации переменной перед if(...):

$udp = false; // initialize $udp before conditional 
if(isset($_POST['Submit'])){ 
    for($i=0;$i<$count;$i++){ 
     $query="UPDATE products SET title='$title[$i]', descr='$descr[$i]', price='$price[$i]', cname='$cname[$i]' WHERE pid='$pid[$i]'"; 
     $upd=mysql_query($query); 
    } 
} 

В этом случае, вы инициализировать $udp с false, поскольку mysql_query() также возвращает false на провал.

+0

Это не помогло. Проблема продолжает существовать. – Suspicius

+0

какой проблема? с решением выше, вы должны избавиться от 'Примечание: неопределенная переменная: upd' ..!? – jotaen

+0

Это только скрывает уведомление, но $ upd работает неправильно. – Suspicius

-1

Вы ответственно закрыли файл php с помощью ?>? У меня были проблемы, которые были решены путем простого закрытия файла.

+0

Я думаю, что сделал. Это не связано с закрытием файла, но, возможно, с моим запросом или объявлениями. – Suspicius

+0

'?>' В конце файла является необязательным. -1 –

+0

@Suspicius: см. Мой комментарий [здесь] (http://stackoverflow.com/questions/19076502/undefined-variable-notice-in-php-mysql/19076524#comment28199115_19076502). –

-1

В дополнение к ответам $upd, только будучи объявленными в условном выражении, вы пишете код, как будто register_globals включен. Вы не должны этого делать.

Заменить $title на $_POST['title'], $descr с $_POST['descr'] и так далее. Это легче сделать, если вы правильно сориентируетесь:

"blah blah blah '".mysql_real_escape_string($_POST['title'][$i])." blah blah blah..."; 

Кроме того, дезинфицируйте входные данные.

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