Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: różne wyniki zapytanie w ADODB i phpMyAdmin
Forum PHP.pl > Forum > Bazy danych > MySQL
krzyszbi
witam
od paru godzin się męcze z następującym problemem a mianowicie
pisze pewien portalik i urzywam w nim klasy do obslugi bazy ADODB
wszystko mi pięknie chodzi aż tu taki zonk ohmy.gif
mam takie zapytanie (to jest taki test i nie dziala)
  1. INSERT
  2. INTO dostawca_gadz_konta
  3. ( `id` , `nr_ref` , `login` , `haslo` , `nazwa_firmy` , `ulica` , `kod_pocztowy` , `miasto` , `wojewodztwo` , `email` , `strona_www` , `osoba_kont` , `telefon` , `fax` , `nip` , `logo` , `opis_firmy` , `newsletter` , `nowy_asortyment` , `widoczny_kat` , `asortyment`, `asortyment_db`, `data_wpisu`) VALUES (NULL , 1, 'szukaj_dostawca', '5ea1904f96a18a2126b7689f5a4ec96e', 'szukaj dostawca', 'szukaj ulica', 'kod', 'miasto dost', '5', 'dostawca@dostawca.pl', 'www.dostawca.pl', 'dostawca dostawca', 'telefon dostawca', 'fax dostawca', 'nip dostawca', NULL, 'dostawca opis firmy', 1, 1, 1, 'inne 1||inne 2||inne 3', '1||3||4||5||7||10||14||15||17||18||24||25||27||32||33||35||37||38||39||41||44||4
    6||50||57'
    , '2006-04-4 13:38:35')

i ADODB nie chce go wykonac a co mnie ciekawi jak wkleje to samo do phpMyAdmin`a to jest ok i dziala, wstawia rekord
próbowalem juz różne kombinacje z ` i bez tego i jeszcze pare innych i nie mam juz pojecia co jest źle
struktóra tabeli
  1. CREATE TABLE `dostawca_gadz_konta` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `nr_ref` int(11) NOT NULL,
  4. `login` varchar(30) collate latin1_general_ci NOT NULL,
  5. `haslo` varchar(32) collate latin1_general_ci NOT NULL,
  6. `nazwa_firmy` varchar(100) collate latin1_general_ci NOT NULL,
  7. `ulica` varchar(100) collate latin1_general_ci NOT NULL,
  8. `kod_pocztowy` varchar(20) collate latin1_general_ci NOT NULL,
  9. `miasto` varchar(50) collate latin1_general_ci NOT NULL,
  10. `wojewodztwo` varchar(50) collate latin1_general_ci NOT NULL,
  11. `email` varchar(30) collate latin1_general_ci NOT NULL,
  12. `strona_www` varchar(100) collate latin1_general_ci NOT NULL,
  13. `osoba_kont` varchar(100) collate latin1_general_ci NOT NULL,
  14. `telefon` varchar(50) collate latin1_general_ci NOT NULL,
  15. `fax` varchar(50) collate latin1_general_ci NOT NULL,
  16. `nip` varchar(50) collate latin1_general_ci NOT NULL,
  17. `logo` varchar(50) collate latin1_general_ci DEFAULT NULL,
  18. `opis_firmy` text collate latin1_general_ci NOT NULL,
  19. `newsletter` int(1) NOT NULL,
  20. `nowy_asortyment` int(1) NOT NULL,
  21. `widoczny_kat` int(1) NOT NULL,
  22. `asortyment` text collate latin1_general_ci NOT NULL,
  23. `asortyment_db` text collate latin1_general_ci NOT NULL,
  24. `data_wpisu` datetime NOT NULL,
  25. PRIMARY KEY (`id`)
  26. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

ADODB deklaruje w następujacy sposób
  1. <?php
  2. $result = $db->Execute("INSERT INTO dostawca_gadz_konta ( `id` , `nr_ref` , `login` , `haslo` , `nazwa_firmy` , `ulica` , `kod_poczt
    owy` , `miasto` , `wojewodztwo` , `email` , `strona_www` , `osoba_kont` , `telefo
    n` , `fax` , `nip` , `logo` , `opis_firmy` , `newsletter` , `nowy_asortyment` , `
    widoczny_kat` , `asortyment`, `asortyment_db`, `data_wpisu`) VALUES (NULL , 1, '$login', '$haslo', '$nazwa_firmy', '$ulica', '$kod_pocz', '$miasto', '$wojewodztwo', '$email', '$strona_www', '$osoba_kont', '$telefon', '$fax', '$nip', $logo, '$opis_firmy', $newsletter, $powiadom_asortyment, $widoczny_kat, '$asortyment', '$asortyment_db', '$data_wpisu'"
    );
  3. $result = $db->ErrorMsg();
  4. echo'<br /><br />';
  5. print_r($result);
  6. echo'<br /><br />';
  7. ?>

$result = $db->ErrorMsg(); zwraca
Cytat
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

więc się pytam co tu jest źle i co poprawić aby dzialalo lub niech mi ktoś wytlumaczy jakie są różnice w ADODB i phpMyAdmin przy wykonywaniu zapytań do db
nospor
nie do konca tak samo zapodajesz smile.gif
przykladowo pole logo, jest tekstem i moze byc puste.
Ty do PMA zapodajesz w to pole NULL, a do ADODB zapodajesz te pole o tak:
..., $logo, ....
no niestety, to ci bedzie plulo errorami. bo logo jako tekst musi byc w ciapkach, czyli:
..., '$logo', ....
w przypadku gdy bedzie ono puste i chesz wstawic null, to musisz napisac null:
..., NULL, ....

co masz w zmiennej $logo? to by ci zadzialalo tylko wtedy, gdybys w zmiennej $logo mial napis NULL. Proponuje zrobic tak:
  1. <?php
  2.  
  3. $logo = empty($logo) ? 'NULL' : "'$logo'";
  4.  
  5. ?>

gdy $logo bedzie puste, to przypisze mu napis NULL. gdy logo bedzie nie puste, to co w nim bylo, obejmie jeszcze w '', czyli zapytanie bedzie generowane prawidlowo
krzyszbi
i tu też pewnie mam ok
mam troche wcześniej zdeklarowane
a mam tak
  1. <?php
  2. if (!empty($_FILES['pliczek']['name']))
  3. $logo = '`'.$_FILES['pliczek']['name'].'`';
  4. else 
  5. $logo = 'NULL';
  6. ?>

czy może else dać bez ciapek??
nospor
a, to przepraszam, ladnie napisales, z malym ale...
czemu obejmujesz te logo poprzez ``. powinienes chyba przez ''.

ps: te zapytanie co dales do PMA, powstalo w wyniku powstawiania tych zmiennech do ADODB? Dokladnie to jest to samo?
krzyszbi
nawet jak dawalem '' zamiast `` to i tak ADODB nie dodaje
a to co wstawiem do PMA to tak to odczytuje
  1. <?php
  2.  
  3. echo"INSERT INTO dostawca_gadz_konta ( `id` , `nr_ref` , `login` , `haslo` , `nazwa_firmy` , `ulica` , `kod_poczt
    owy` , `miasto` , `wojewodztwo` , `email` , `strona_www` , `osoba_kont` , `telefo
    n` , `fax` , `nip` , `logo` , `opis_firmy` , `newsletter` , `nowy_asortyment` , `
    widoczny_kat` , `asortyment`, `asortyment_db`, `data_wpisu`) VALUES (NULL , 1, '$login', '$haslo', '$nazwa_firmy', '$ulica', '$kod_pocz', '$miasto', '$wojewodztwo', '$email', '$strona_www', '$osoba_kont', '$telefon', '$fax', '$nip', $logo, '$opis_firmy', $newsletter, $powiadom_asortyment, $widoczny_kat, '$asortyment', '$asortyment_db', '$data_wpisu')"
    ;
  4. ?>

identyczne z tym co dostaje ADODB i dalej tego nie bierze
próbowalem też
  1. <?php
  2.  
  3. $query = "INSERT INTO dostawca_gadz_konta ( `id` , `nr_ref` , `login` , `haslo` , `nazwa_firmy` , `ulica` , `kod_poczt
    owy` , `miasto` , `wojewodztwo` , `email` , `strona_www` , `osoba_kont` , `telefo
    n` , `fax` , `nip` , `logo` , `opis_firmy` , `newsletter` , `nowy_asortyment` , `
    widoczny_kat` , `asortyment`, `asortyment_db`, `data_wpisu`) VALUES (NULL , 1, '$login', '$haslo', '$nazwa_firmy', '$ulica', '$kod_pocz', '$miasto', '$wojewodztwo', '$email', '$strona_www', '$osoba_kont', '$telefon', '$fax', '$nip', $logo, '$opis_firmy', $newsletter, $powiadom_asortyment, $widoczny_kat, '$asortyment', '$asortyment_db', '$data_wpisu')"
    ;
  4. echo $query;
  5. $result = $db->Execute($query);
  6.  
  7. ?>

i to co wyświetli echo dawalem do PMA a i tak nie dziala
juz nie mam pojecia co jest nie tak

--------------------------------------
UPDATE
nie wiem co to zmienia ale takie mi coś dziala
  1. $result = $db->Execute("INSERT
  2. INTO dostawca_gadz_konta
  3. ( `id` , `nr_ref` , `login` , `haslo` , `nazwa_firmy` , `ulica` , `kod_pocztowy` , `miasto` , `wojewodztwo` , `email` , `strona_www` , `osoba_kont` , `telefon` , `fax` , `nip` , `logo` , `opis_firmy` , `newsletter` , `nowy_asortyment` , `widoczny_kat` , `asortyment`, `asortyment_db`, `data_wpisu`) VALUES (NULL , 1, '$login', '$haslo', '$nazwa_firmy', '$ulica', '$kod_pocz', '$miasto', '$wojewodztwo', '$email', '$strona_www', '$osoba_kont', '$telefon', '$fax', '$nip', $logo, '$opis_firmy', $newsletter, $powiadom_asortyment, $widoczny_kat, '$asortyment', '$asortyment_db', '$data_wpisu');");

a może to jest jakiś bag w ADODB? ohmy.gif
w kazdym razie guitar.gif i dzieki za zainresowanie
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.