При обновлении PHP делает все поля пустыми - PullRequest
0 голосов
/ 01 мая 2011

Я использую следующий код. Всякий раз, когда форма используется для обновления, PHP очищает эти поля в БД. Я знаю, что это произойдет, если имена полей не совпадают, поэтому я трижды проверил их, все они работают. Это первый раз, когда я получаю эту ошибку. Не уверен, что делать.

Код:

     //Getting Unique ID
     $sql = "select `Person_id` from `accounts` where `username` = '$username'";
     $query = mysql_query($sql) or die ("Error: ".mysql_error());

     while ($row = mysql_fetch_array($query)){

     $pid = $row['Person_ID'];
      }
         mysql_free_result($query);

      $newname = mysql_real_escape_string($_POST['Full_name']);
      $newgender = mysql_real_escape_string($_POST['Patient_gender']);
       $newmonth = mysql_real_escape_string($_POST['Month']);
       $newday = mysql_real_escape_string($_POST['Day']);
       $newyear = mysql_real_escape_string($_POST['Year']);
        $newacctss = mysql_real_escape_string($_POST['Acct_SS']);
        $newaddress = mysql_real_escape_string($_POST['Address']);
        $newaddress2 = mysql_real_escape_string($_POST['Address2']);
          $newcity = mysql_real_escape_string($_POST['City']);
         $newstate = mysql_real_escape_string($_POST['State']);
         $newzipcode = mysql_real_escape_string($_POST['Zip_code']);
          $newhomephone = mysql_real_escape_string($_POST['Home_phone']);
        $newcellphone = mysql_real_escape_string($_POST['Cell_phone']);
       $neworkphone = mysql_real_escape_string($_POST['Work_phone']);
       $newsure = mysql_real_escape_string($_POST['Sure']);
       $newfav = mysql_real_escape_string($_POST['Favorite']);
       $newcars = mysql_real_escape_string($_POST['Cars']);
       $newdrinks = mysql_real_escape_string($_POST['Drinks']);
         $newmoi = mysql_real_escape_string($_POST['About_moi']);


       //Update Name Only
      $sql = "UPDATE accounts SET `full_name` = '$newname' WHERE Username = '$username'"; 
       $query1 = mysql_query($sql) or die ("Error: ".mysql_error());


     //Everything else being udpated here 
    $sql2 = "UPDATE profile SET `Patient_gender` = '$newgender', 
    `Month` = '$newmonth', `Day` =  '$newday', `Year` = '$newyear', 
    `Acct_SS` = '$newacctssn', `Address` = '$newaddress', 
    `Address2` = '$newaddress2', `City` = '$newcity', `State` = '$newstate', 
    `Zip_code` = '$newzipcode', `Home_phone` = '$newhomephone', 
    `Cell_phone` = '$cellphone', `Work_phone` = '$neworkphone', 
    `Sure` = '$newsure', `Favorite` = '$newfav', `Cars` = '$newcars', 
     `Drinks` = '$newdrinks', `About_moi` = '$newmoi' WHERE Person_id = '$pid'"; 
      $query2 = mysql_query($sql2) or die ("Error: ".mysql_error());

1 Ответ

3 голосов
/ 01 мая 2011

Ключи массива чувствительны к регистру в PHP. Вы запрашиваете базу данных для Person_id, но получаете Person_ID. Вы хотите проверить, что вы действительно получаете что-то из своего набора результатов, проверив, что $pid пусто после вызова извлечения и выручить, если так.

Кроме того, если ваш запрос выбирает только одну строку, вам не нужна конструкция while().

Кроме того, убедитесь, что $newname действительно создается правильно. Если ваша форма не отправляется должным образом, или поле имени на самом деле называется чем-то другим, вы будете вставлять пробел в базу данных, потому что переменная никогда не заполнялась должным образом. Проверьте, что вы отправляете, выполнив var_dump($_POST).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...