Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapytania do mysql
Forum PHP.pl > Forum > Bazy danych > MySQL
sztosz
Kolejny problem to pytanie do mysqla, dodajac plyte do bazy najpierw sprawdzam w tabeli wykonawcy czy jest juz wykonawca tej plyty. jesli jest pobieram wyk_ID aby wstawic do tabeli plyty. Jesli nie ma to go wstawiam do tabeli wykonawcy i pobieram wyk_ID aby wstawic do tabeli plyty. Z wytwornia plytowa robie to samo. oto kod:
[php:1:da8b1c02ea]<?php
//Laczenie z MySQL
$db = mysql_pconnect ('127.0.0.1', 'php_plyty', 'plyty_password');

if (!$db)
{
echo "blad polaczenia";
}

//Wybieranie konkretnej bazy danych
mysql_select_db('plyty_audio');

//Sprawdzanie Autora
$zapytanie = "select * from wykonawcy";


$wynik = mysql_query ($zapytanie);

$znacznik = '0';

$ile = mysql_num_rows ($wynik);

for ($i = 0; $i < $ile; $i++)
{
$element = mysql_fetch_array($wynik);
if ($element['nazwa'] == $nazwa)
{
//Jesli jest, pobieranie wyk_ID
$wyk_ID = stripslashes($element['wyk_ID']);
$znacznik = '1';
}//end if
}//end for


if ($znacznik != '1')
{
//Jesli nie ma, wpisywanie do bazy i zwracanie wyk_ID
$zapytanie = "insert into wykonawcy set (nazwa='".$nazwa."')";
mysql_query ($zapytanie);
$zapytanie = "select * from wykonawcy where nazwa like '".$nazwa."'";
$odp = mysql_query ($zapytanie);
$ile = mysql_num_rows ($wynik);
$elem = mysql_fetch_row($odp);
$wyk_ID = $elem['wyk_ID'];
}//end if

//Sprawdzanie Wytworni
$zapytanie = "select * from wydawca";

$wynik = mysql_query ($zapytanie);

$znacznik = '0';

$ile = mysql_num_rows ($wynik);

for ($i = 0; $i < $ile; $i++)
{
$element = mysql_fetch_array($wynik);
if ($element['logo'] == $logo)
{
//Jesli jest, pobieranie wyk_ID
$wydawca_ID = $element['wydawca_ID'];
$znacznik = '1';
}//end if
}//end while

if ($znacznik != '1')
{
//Jesli nie ma, wpisywanie do bazy i zwracanie wyk_ID
$zapytanie = "insert into wydawcy set (nazwa='".$logo."')";
mysql_query ($zapytanie);
$zapytanie = "select * from wykonawcy where nazwa='".$logo."'";
$odp = mysql_query ($zapytanie);
$elem = mysql_fetch_array($odp);
$wydawca_ID = $elem['wydawca_ID'];
}//end if


//Wpisywanie nowej płyty
$zapytanie = ("insert into plyty set (
wyk_ID='".$wyk_ID."',
tytul='".$tytul."',
rodzaj='".$rodzaj."',
rok='".$rok."',
ilosc_cd='".$ilosc_cd."',
wydawca_ID='".$wydawca_ID."')"
);

mysql_query ($zapytanie);
?>[/php:1:da8b1c02ea]

Kod mi sie wywala:
[php:1:da8b1c02ea]<?php
$odp = mysql_query ($zapytanie);
$ile = mysql_num_rows ($wynik);
$elem = mysql_fetch_row($odp);
$wyk_ID = $elem['wyk_ID'];//w tym miejscu
?>[/php:1:da8b1c02ea]
i zwraca warning ze nie poprawny typ dla mysql_fetch_row. Jak stosuje mysql_fetch_array wywala tak samo.

Co robić? Gdzie błąd? Siedzę nad tym od dwoch dni. mam ksiazke php i MySQL 2nd edition wydawnictwa Heloin, nie pomaga.

Z góry pragnę podziekowac za wszelkie wsparcie.
?>[/php]
rogrog
[php:1:5b77d71ef2]<?php
echo mysql_error();
?>[/php:1:5b77d71ef2]

po pierwsze powiedz jaki ci zwraca error

po drugie wyjaśnie :

mysql_fetch_row(); zwraca tablice z tym co zwrocila baza, ale z kluczami liczbowymi (czyli po prostu $row[0] - pierwsze pole $row[1] drugie pole itd.)

mysql_fetch_assoc(); i mysql_fetch_array($resource, MYSQL_ASSOC); - zwraca talbice z kluczami tekstowymi (czyli taka jaka nazwa pola, taki klucz w tablicy - w uproszczeniu)

mysql_fetch_array(); - zwraca tablice i z kluczami tekstowymi i z liczbowymi (tak jakby dwie polaczone)
hwao
php pocz -> Bazy
cboot
Co to są za inserty:
[php:1:5940eed731]<?php
$zapytanie = "insert into wydawcy set (nazwa='".$logo."')";
?>[/php:1:5940eed731]
Nie czasem tak:
[php:1:5940eed731]<?php
$zapytanie = "insert into wydawcy ( nazwa ) values ( '".$logo."' )";
?>[/php:1:5940eed731]
sztosz
Cytat
Co to są za inserty:
[php:1:98713599fe]<?php
$zapytanie = "insert into wydawcy set (nazwa='".$logo."')";  
?>[/php:1:98713599fe]
Nie czasem tak:
[php:1:98713599fe]<?php
$zapytanie = "insert into wydawcy ( nazwa ) values ( '".$logo."' )";  
?>[/php:1:98713599fe]


To zależy bo jak chcesz wpisac wartosci po kolei to urzywasz:
[php:1:98713599fe]<?php
insert into table values ( 'value_1st', 'value_2nd', 'value_3rd' 'and_so_on' );

?>[/php:1:98713599fe]

A jak pojedyńczą wartość w konkretne pole to można:
[php:1:98713599fe]<?php
insert into table set (nazwa_pola='value');

?>[/php:1:98713599fe]

I to działa (chociarz może nie w tym konkretnym przypadku rolleyes.gif )

Ale w sumie nie tu tkwi problem.

@rogrog: Dzięki za to mysql_error();

Zaraz w domu sprawdze co to daje (w pracy nie mam dostepu do localhosta z php a przez internet to nie ma sensu póki skrypt nie jest gotowy)

I dzięki za mysql_fetch_assoc(); zapomniałem ze to istnieje :oops: .

Mam nadzieje ze pomoze. :?

@hwao: "php pocz -> Bazy" było w php pocz. bo ja z php mam dopiero styczność od tygodnia tongue.gif
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-2024 Invision Power Services, Inc.