heh.pl
Kanał informacyjny Heh.pl


Czwartek 2 maja 2024 r.

artykuły | abc komputera (archiwum) | forum dyskusyjne | redakcja


Temat

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


195.205.63.* napisał:
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 [php] - ParanoiK

80.53.147.* napisał:
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]

195.205.63.* napisał:
prawa mam. jak dodawalem wczesniej po swojemu (choc prawie identycznie) wpisujac dane na sztywyno a nie w formularzu to dzialalo

wywaliło:

[quote] Error3 Nieznana kolumna 'Obcy' w field list[/quote]

Gdzie "Obcy" to wpis w pole tekstowe "Tytul polski"

Gdy pomijam Tytul polski (zostawiam puste miejsce) to wywala:

[quote] Error3 Something is wrong in your syntax obok ' h, g, i, t, r)' w linii 1[/quote]

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)

80.53.147.* napisał:
A zrób alter table i dodaj int (auto_number) jako PK.

195.205.63.* napisał:
a mozna troche jasniej?? jestem zoltodziobem.

Alter Table??
i co znaczy PK

213.17.150.* napisał:
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]

212.109.132.* napisał:
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 wink.gif ) zapytanie powinno byc takie:


pshem: to nie fair.. ja mialem wiecej do napisania ;p

Podobne tematy


Działy









Copyright © 2002-2024 | Prywatność | Load: 1.78 | SQL: 1 | Uptime: 42 days, 8 min h:m | Wszelkie uwagi prosimy zgłaszać pod adresem eddy@heh.pl