soska66 Opublikowano 20 Grudnia 2004 Zgłoś Opublikowano 20 Grudnia 2004 Poniższy skrypt to zawartość całego pliku przyklad.php. Jego zadaniem jest dodanie do bazy danych "filmy" informacji wprowadzonych przez użytkownika (pola tekstowe). Baze mam utworzoną. tabele też. Pola w tabelach są zadeklarowane jako char. Nazwy się zgadzają. Skrypt nie działa. Dokładniej - wyrzuca błąd wykonania zapytania. Może jestemj ślepy:) a może jestem jeszcze niedouczony ( w sumie dopiero zacząłem bawić się z sql). Ale to jest przykład z książki. Jedyne co zmieniłem to nazwy zmiennych. Proszę o pomoc. Co tu jest nie tak?? [php:1:98a94920f5] <?php /* Funkcja InsertRecord Wstawia mowy rekord do tabeli employees. W przypadku powodzenia operacji zwraca identyfikator nowego rekordu a w przypadku błędu wartość ujemną wskazującą na przyczynę błędu. */ function InsertRecord( $aTytulpl, $aTytulen, $aGatunek1, $aGatunek2, $aProdukcja, $aRezyser, $aAktor1, $aAktor2, $aAktor3, $aAktor4) { // Przygotowanie wyrażenia SQL INSERT $wstaw = "insert into film (tytulpl,tytulen,gatunek1,gatunek2,produkcja,rezyser,aktor1,aktor2,aktor3,aktor4 ) values ( $aTytulpl, $aTytulen, $aGatunek1, $aGatunek2, $aProdukcja, $aRezyser, $aAktor1, $aAktor2, $aAktor3, $aAktor4)"; // Przyłączenie do serwera i wykonanie instrukcji INSERT $sql = mysql_connect( "localhost", "root", "krasnal" ); mysql_select_db( filmy, $sql ); $wynik = mysql_query( $wstaw, $sql ); if ( $wynik == True ) { $wynik = mysql_insert_id( $sql ); } else { // print( "Błąd wykonania zapytania<br>" ); $wynik = -1; } return $wynik; } ?> <html> <head> <title>Przykład MySQL: Wstawianie danych do bazy </title> </head> <body> <?php if ( $REQUEST_METHOD == 'POST' ) { // Nastąpiło przesłanie danych formularza $wynik = InsertRecord($Tytulpl, $Tytulen, $Gatunek1, $Gatunek2, $Produkcja, $Rezyser, $Aktor1, $Aktor2, $Aktor3, $Aktor4); if ( $wynik > 0 ) { print( "Dodano nowy wiersz, ID = $wynik<br>" ); } else { print( "Błąd funkcji InsertRecord. Kod błędu = $wynik<br>" ); } print( "<hr>" ); } ?> Wpisz dane dodawanego filmu:<br> <form action="<?php echo $PHP_SELF ?>" method="post"> Tytul polski <input type="text" name="Tytulpl" maxlength="30"><br> Tytul oryginalny: <input type="text" name="Tytulen" maxlength="30"><br> Gatunek (pierwszy): <input type="text" name="Gatunek1" maxlength="10"><br> Gatunek (drugi): <input type="text" name="Gatunek2" maxlength="10"><br> Produkcja: <input type="text" name="Produkcja" maxlength="30"><br> Rezyser: <input type="text" name="Rezyser" maxlength="30"><br> Aktor: <input type="text" name="Aktor1" maxlength="30"><br> Aktor: <input type="text" name="Aktor2" maxlength="30"><br> Aktor: <input type="text" name="Aktor3" maxlength="30"><br> Aktor: <input type="text" name="Aktor4" maxlength="30"><br> <input type="submit" name="Submit" value="Wyslij"> </form> </body> </html> [/php:1:98a94920f5] // Zmieniłem tagi na - ParanoiK Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ParanoiK Opublikowano 20 Grudnia 2004 Zgłoś Opublikowano 20 Grudnia 2004 Zrób tak i napisz co ci wywala: [php:1:668f973489] function InsertRecord( $aTytulpl, $aTytulen, $aGatunek1, $aGatunek2, $aProdukcja, $aRezyser, $aAktor1, $aAktor2, $aAktor3, $aAktor4) { // Przygotowanie wyrażenia SQL INSERT $wstaw = "insert into film (tytulpl,tytulen,gatunek1,gatunek2,produkcja,rezyser,aktor1,aktor2,aktor3,aktor4 ) values ( $aTytulpl, $aTytulen, $aGatunek1, $aGatunek2, $aProdukcja, $aRezyser, $aAktor1, $aAktor2, $aAktor3, $aAktor4)"; // Przyłączenie do serwera i wykonanie instrukcji INSERT $sql = mysql_connect( "localhost", "root", "krasnal" ) or die("Error1 " . mysql_error()); mysql_select_db( filmy, $sql ) or die("Error2 " . mysql_error());; $wynik = mysql_query( $wstaw, $sql ) or die("Error3 " . mysql_error());; if ( $wynik == True ) { $wynik = mysql_insert_id( $sql ); } else { // print( "Błąd wykonania zapytania<br>" ); $wynik = -1; } return $wynik; } ?> btw1: sprawdź czy masz odpowiednie prawa dostępu do bazy. btw2: sprawdź czy baza i tabele są utworzone. [/php:1:668f973489] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
soska66 Opublikowano 21 Grudnia 2004 Zgłoś Opublikowano 21 Grudnia 2004 prawa mam. jak dodawalem wczesniej po swojemu (choc prawie identycznie) wpisujac dane na sztywyno a nie w formularzu to dzialalo wywaliło: Error3 Nieznana kolumna 'Obcy' w field list Gdzie "Obcy" to wpis w pole tekstowe "Tytul polski" Gdy pomijam Tytul polski (zostawiam puste miejsce) to wywala: Error3 Something is wrong in your syntax obok ' h, g, i, t, r)' w linii 1 Gdzie h,g,i,t,r to wpisy w kolejnych polach (tytulen,gatunek1,gatunek2,produkcja,rezyser). $ pola aktorow wywalilem (zarowno zmienne jak i pola w bazie danych) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ParanoiK Opublikowano 21 Grudnia 2004 Zgłoś Opublikowano 21 Grudnia 2004 A zrób alter table i dodaj int (auto_number) jako PK. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
soska66 Opublikowano 21 Grudnia 2004 Zgłoś Opublikowano 21 Grudnia 2004 a mozna troche jasniej?? jestem zoltodziobem. Alter Table?? i co znaczy PK Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
pshem Opublikowano 21 Grudnia 2004 Zgłoś Opublikowano 21 Grudnia 2004 sprobuj tez wstawic zmienne z danymi do wrzucenia do tabeli w apostrofy. to zaradzi na twoj pierwszy porblem. [php:1:bf4d8b773c] $wstaw = "insert into film (tytulpl,tytulen,gatunek1,gatunek2,produkcja,rezyser,aktor1,aktor2,aktor3,aktor4 ) values ( '$aTytulpl', '$aTytulen', '$aGatunek1', '$aGatunek2', '$aProdukcja', '$aRezyser', '$aAktor1', '$aAktor2', '$aAktor3', '$aAktor4')"; [/php:1:bf4d8b773c] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 21 Grudnia 2004 Zgłoś Opublikowano 21 Grudnia 2004 Na pierwszy rzut oka brakuje Ci apostrofow w zapytaniu. Wszystkie pola bedace stringami (VARCHAR'y rozne TEXT'y itp) powinny byc zamkniete w apostrofy przy dodawaniu, wiec poprawne (a przynajmniej poprawniejsze ;) ) zapytanie powinno byc takie: insert into film (tytulpl,tytulen,gatunek1,gatunek2,produkcja,rezyser,aktor1,aktor2,aktor3,aktor4 ) values ( '$aTytulpl', '$aTytulen', '$aGatunek1', '$aGatunek2', '$aProdukcja', '$aRezyser', '$aAktor1', '$aAktor2', '$aAktor3', '$aAktor4') pshem: to nie fair.. ja mialem wiecej do napisania ;p Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...