Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] mysql_query() zwraca false
Forum PHP.pl > Forum > PHP
jarmiar
Witam,

Od dłuższego czasu męczę się ze skryptem, w którym funkcja mysql_query() zwraca mi wartość false.

Oto kod:
  1. <?php
  2. polacz();
  3.  
  4. $zapytanie_dodaj_firme = "INSERT INTO firmy SET nazwa_firmy='$nazwa_firmy2', adres='$adres2', miejscowosc='$miejscowosc2',kod='$kod2', wojewodztwo='$wojewodztwo_podaj', oferta_firmy='$oferta_firmy2', email_firmy='$email_firmy2', adres_www_firmy='$adres_www_firmy2', telefon='$telefon12', telefon2='$telefon21', fax='$fax2',informacje_dodatkowe='$informacje_dodatkowe2', dodana='$dodana2',imie_naz='$imie_naz',tel='$tel',email3='$email3',ip_dodano='$ip_dodano',host_dodano='$host_dodano',zgoda='$zgoda', $kategorie_input";
  5.  
  6. $wynik_dodania=mysql_query($zapytanie_dodaj_firme);
  7.  
  8. if($wynik_dodania)
  9. {
  10. //jeśli true
  11. }
  12. else
  13. {
  14. //jeśli false
  15.  
  16. //sprawdzam także co zawiera
  17. print_r($wynik_dodania);
  18. }
  19. ?>

dodam jeszcze że na tym czymś mam opartych kilka serwisów i na reszcie działa, tylko na tym jednym coś nie działa

czy może być tego przyczyną jakiś błąd przy importowania struktury bazy danych?
b_chmura
Cytat
czy może być tego przyczyną jakiś błąd przy importowania struktury bazy danych?

najprawdopodobniej w tym leży problem.
Sprawdź przede wszystkim czy poprawnie łączysz sie z bazą i wybierasz prawidłową bazę/tabelę.
jarmiar
to jest na 100% poprawne

połączenie jest praidłowe i wybieranie tabeli tez
matix
Ja polecam ci zrobić klasę do obsługi mysql, ewentualnie funkcję insert,update, bo te są najtrudniejsze. Btw. Chyba zamiast INSERT powinieneś dać UPDATE, bo konstrukcja tego zapytania tak wygląda.

Przesylam ci mój kawałek "inserta".

  1. <?
  2. public function insert($name, $array)
  3. {
  4. $sKeys = implode(',', array_keys($array));
  5. $sValues = implode("','", array_values($array));
  6.  
  7. return mysql_query('INSERT INTO '.$name.' ('.$sKeys.') VALUES (''.$sValues.'')');
  8. }
  9. ?>


Przykład wykorzystania jest bardzo prosty:

  1. <?
  2. $tabela = 'news';
  3. $cododac = array (
  4. 'title' => 'nowy tytul',
  5. 'content' => 'nowa tresc',
  6. 'date' => 'jakias tam data',
  7. 'author' => 'autor'
  8. );
  9.  
  10. if (insert($tabela, $cododac)) echo 'ok'; else print (mysql_error());
  11. ?>


Pozdrawiam,
Matix smile.gif
jarmiar
zrobiłem tak jak powiedział mi Matix

ale niestety wyskakuje mi taki błąd

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 ') VALUES ('sfd','','','','h','sdf@sds.pl','','-','','1197104384','sdf','dsf','83' at line 1

mógłby mi to ktoś poprawić, byłbym bardzo wdzięczny
franki01
Pierwszy raz widze taką składnię zapytania INSERT. Zrob normalne:

  1. <?php
  2. $query = "INSERT INTO firmy(nazwa_firmy, adres, miejscowosc, kod, ............) VALUES('{$nazwa_firmy2}', '{$adres2}', '{$miejscowosc2}', '{$kod2}', .............)";
  3. ?>
b_chmura
Normalnie to chyba będzie tak
  1. <?php
  2. $query = "INSERT INTO `NAZWA_TABELI` VALUES ('param1', '$param2', '".function($param3)."', '".functionelse()."');";
  3. ?>
jarmiar
zrobiłęm tak:

  1. <?php
  2. $zapytanie_dodaj = "INSERT INTO firmy(nazwa_firmy, adres, miejscowosc, wojewodztwo, oferta_firmy, email_firmy, ad
    res_www_firmy, telefon, telefon2, fax, informacje_dodatkowe, dodana, imie_naz, te
    l, ip_dodano, host_dodano, zgoda) VALUES('{$nazwa_firmy2}', '{$adres2}', '{$miejscowosc2}', '{$wojewodztwo_podaj}', '{$oferta_firmy2}', '{$email_firmy2}', '{$adres_www_firmy2}', '{$fax2}', '{$informacje_dodatkowe2}', '{$dodana2}, '{$imie_naz}', '{$tel}', '{$ip_dodano}', '{$host_dodano}', '{$zgoda}')"
    ;
  3. $wynik_dodania = mysql_query($zapytanie_dodaj);
  4. ?>


ale wyskakuje ten sam błąd

Kod
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 'sdf', 'dsf', '83.8.33.226', 'abor226.neoplus.adsl.tpnet.pl', 'tak')' at line 1Problem z dodaniem do bazy danych
em1X
Cytat("jarmiar")
INSERT INTO firmy(nazwa_firmy, adres, miejscowosc, wojewodztwo, oferta_firmy, email_firmy, adres_www_firmy, telefon, telefon2, fax, informacje_dodatkowe, dodana, imie_naz, tel, ip_dodano, host_dodano, zgoda) VALUES('{$nazwa_firmy2}', '{$adres2}', '{$miejscowosc2}', '{$wojewodztwo_podaj}', '{$oferta_firmy2}', '{$email_firmy2}', '{$adres_www_firmy2}', '{$fax2}', '{$informacje_dodatkowe2}', '{$dodana2}, '{$imie_naz}', '{$tel}', '{$ip_dodano}', '{$host_dodano}', '{$zgoda}')


1) Ilość pól wynosi 17: firmy(...) a dodajesz pól 15. Chyba nie bardzo wyjdzie?
2) Czy wszystkie pola są typu varchar? Jezeli któryś jest integer to baza nie pozwoli dodać wartości tak: '20'. Integery musza być dodawane przez apostrofów.
jarmiar
no ale najgorsze jest to, że ten skrypt, którego kod podałem na samym początku działa na innych moich serwisach.

A na tym akurat nie.

Ja przypuszczam, że jest coś nie tak ze strukturą bazy danych. Może coś było źle podczas importu bazy.

Ale może się mylę.
franki01
Moze na nowym serwerze jest inna wersja mysql (moze nowsza, moze starsza) i inaczej interpretuje zapytania. Zacznij tworzyc zgodnie z ogolnymi standardami to nie bedzie problemow.
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.