Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL + PHP] Insert Into nie działa?
Forum PHP.pl > Forum > PHP
NPDist66
  1. <?php
  2.      /*
  3.           Funkcja InsertRecord
  4.               Wstawia mowy rekord do tabeli employees.
  5.               W przypadku powodzenia operacji zwraca identyfikator nowego rekordu
  6.               a w przypadku błędu wartość ujemną wskazującą na przyczynę błędu.
  7.       */
  8.      function InsertRecord( $aFirstName, $aLastName, $aAddr, $aPos )
  9.      {
  10.          // Przygotowanie wyrażenia SQL INSERT
  11.  
  12.       $aSQL = "insert into employees ( first, last, address, ";
  13.       $aSQL .= "position ) values ( '$aFirstName', '$aLastName', ";
  14.       $aSQL .= "'$aAddr', '$aPos' )";
  15.  
  16.          // Przyłączenie do serwera i wykonanie instrukcji INSERT
  17.                    
  18.  
  19.            $aDBLink = mysql_connect( "localhost", "userek", "passwordzik" ); // bazę danych mam.
  20.       if ( !empty( $aDBLink ) )
  21.       {
  22.            if ( mysql_select_db( "mydb", $aDBLink ) == True )
  23.            {    
  24.                 $aQResult = mysql_query( $aSQL, $aDBLink );  // z tą linijką wg mnie jest problem.
  25. // wszystkie potrzebne tabele istnieją, spokojnie mogę z nich wczytywać wartości
  26. // używając select * from
  27.  
  28.  
  29.                 if ( $aQResult == True )
  30.                 {
  31.                      $aResult = mysql_insert_id( $aDBLink );
  32.                 }
  33.                 else
  34.                 {
  35.                      // print( "Błąd wykonania zapytania" );
  36.                      $aResult = -1;
  37.                 }
  38.            }
  39.            else
  40.            {
  41.                 // print( "Błąd wyboru bazy danych" );
  42.                 $aResult = -2;
  43.            }
  44.       }
  45.       else
  46.       {
  47.            // print( "Błąd przy podłączaniu do bazy danych" );
  48.            $aResult = -3;
  49.       }
  50.       return $aResult;
  51.   }
  52.   ?>
  53.   <html>
  54.       <head>
  55.            <title>Przykład MySQL: Wstawianie danych do bazy </title>
  56.       </head>
  57.       <body>
  58.       <?php
  59.            if ( $REQUEST_METHOD == 'POST' )
  60.            {
  61.                 // Nastąpiło przesłanie danych formularza
  62.                 $aResult = InsertRecord( $FirstName, $LastName,
  63.                                           $Address, $Position );
  64.  
  65.                 if ( $aResult > 0 )
  66.                 {
  67.                      print( "Dodano nowy wiersz, ID = $aResult" );
  68.                 }
  69.                 else
  70.                 {
  71.                      print( "Błąd funkcji InsertRecord. Kod błędu = $aResult" );
  72.                 }
  73.                 print( "<hr>" );
  74.            }
  75.       ?>
  76.       Proszę wpisać dane nowego pracownika:
  77.  
  78.       <form action="<?php echo $PHP_SELF ?>" method="post">
  79.            Imię: <input type="text" name="FirstName" maxlength="20">
  80.  
  81.            Nazwisko: <input type="text" name="LastName" maxlength="20">
  82.  
  83.            Adres: <input type="text" name="Address" maxlength="255">
  84.  
  85.            Stanowisko: <input type="text" name="Position" maxlength="50">
  86.  
  87.  
  88.            <input type="submit" name="Submit" value="Wyślij">
  89.       </form>
  90.       </body>
  91.   </html>


Otrzymuję w html po wpisaniu wartości:

Cytat
Błąd funkcji InsertRecord. Kod błędu = -1


Wcześniej nie otrzymuję żadnych błędów.

Informacje z phpinfo():

Server API: Apache 2.0 Handler
display_errors: On
register_globals: On

(coś jeszcze będzie potrzebne? )

Nie mogę za nic zmusić mysql_query do działania. Próbowałem do zmiennej $aSQL przypisywać wartości z ` czy '' (podwójny znak apostrofu bodajże tongue.gif ) i nic.

Liczę, że guru na tym forum wskaże, gdzie biedaczek popełnia błąd. biggrin.gif

Pozdrawiam
koreja
  1. <?php
  2. $aQResult = mysql_query( $aSQL, $aDBLink );  // z tą linijką wg mnie jest problem.
  3. // wszystkie potrzebne tabele istnieją, spokojnie mogę z nich wczytywać wartości
  4. // używając select * from
  5. ?>


Spróbuj dopisać:
  1. <?php
  2. $aQResult = mysql_query( $aSQL, $aDBLink ) or die(mysql_error());
  3. ?>


to dowiesz się, czy faktycznie w tej linijce jest błąd.

A i zmień kodowanie (nie używaj pogrubienia).
NPDist66
(Wybacz, ten edytor WYSIWYG mi całkowicie nie pasuje).

Za pomocą funkcji mysql_error() otrzymałem:

Cytat
Unknown column 'address' in 'field list'


Screenshot z bazą danych:
http://i44.tinypic.com/126bj9e.jpg

Jak widać, w kodzie SQL (który skopiowałem prosto z książki) był błąd, kolumna "adress" była błędnie utworzona. Dzięki mysql_error() wiem, w czym tkwi problem:)

Powinno być: address. Czyli zwykła literówka:)

Wielkie dzięki za pomoc koreja!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.