Skocz do zawartości
soska66

MySQl - przykład skryptu z książki - czemu nie działa??

Rekomendowane odpowiedzi

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...