Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PostgreSQL]postgresql gdzie jest błąd
Forum PHP.pl > Forum > Przedszkole
silverwind
wyskakuje błąd Warning: pg_query(): Query failed: BŁĄD: błąd składni w lub blisko "`" LINE 1: INSERT INTO `osoby` (`Imie`, `Nazwisko`,`Wiek`) VALUES ('Ewa... ^ in


  1. <?php
  2. //
  3. // Nawiązanie połączenia, wybór bazy danych
  4.  
  5. $con = pg_pconnect("host=localhost dbname=my_db user=postgres password=cyber1985")
  6. or die('Nie można nawiązać połączenia: ' . pg_last_error());
  7.  
  8.  
  9.  
  10.  
  11. $stoper_start = time(true);
  12.  
  13.  
  14. usleep(10000);
  15. $query = "INSERT INTO `osoby` (`Imie`, `Nazwisko`,`Wiek`) VALUES ";
  16.  
  17.  
  18. for($i=0; $i<50000; $i++)
  19. {
  20. $query .= "('Ewa', 'Ciemala', '87'),";
  21.  
  22. }
  23.  
  24. $query = substr($query, 0, -1); // na końcu nie może być przecinka więc go ucinam
  25. pg_query($query);
  26.  
  27.  
  28.  
  29. $stoper_stop = time(true); //koniec pomiaru
  30.  
  31. $wynik=bcsub($stoper_stop, $stoper_start,0);
  32. //$wynik_tab[$j] = array($wynik);
  33. //print_r($wynik_tab[$j]);
  34. //}
  35.  
  36.  
  37.  
  38.  
  39.  
  40. ?><p class="wynik"><h1> <?php echo $wynik; echo " sekundy" ?></h1></p>;
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48. <?php
  49. pg_close($con);
  50. ?>
mmmmmmm
W postgreSQL nie ma grawisów. Są cudzysłowia.
Czyli powinno być:
  1. INSERT INTO "osoby" ("Imie", "Nazwisko","Wiek") VALUES

Tylko musisz wziąc pod uwagę, że w postgreSQL napisane w cudzysłowiu MUSZA się dokładnie tak nazywać, czy w twoim przykładzie pole musi być "Wiek", nie "WIEK", albo "wiek"
silverwind
[quote name='mmmmmmm' date='10.05.2015, 15:49:48 ' post='1157531']
W postgreSQL nie ma grawisów. Są cudzysłowia.
Czyli powinno być:
  1. INSERT INTO "osoby" ("Imie", "Nazwisko","Wiek") VALUES

Tylko musisz wziąc pod uwagę, że w postgreSQL napisane w cudzysłowiu MUSZA się dokładnie tak nazywać, czy w twoim przykładzie pole musi być "Wiek", nie "WIEK", albo "wiek"
[/

Nie działa chcę podkreślić że w bazie danych jest dokładnie tak samo napisane
teraz mam taki błąd
PHP Parse error: syntax error, unexpected 'osoby' (T_STRING)
viking
Pewnie zrobiłeś coś takiego?
  1. $query = "INSERT INTO "osoby" ("Imie", "Nazwisko","Wiek") VALUES ";


Wracamy do podstaw http://php.net/manual/en/language.types.st...g.syntax.single
silverwind
Tak mi doradził twój poprzednik to jak to w końcu ma być tym postgresql bo na każdej stronie inaczej pisze.
viking
Zadaj sobie poważne pytanie jak się łączy stringi w PHP jeżeli w powyższym nie widzisz błędu smile.gif
Ma być tak jak kolega powiedział tylko poprawnie w PHP zapisane.
silverwind
można użycz kopki . lub .=
viking
Super, a teraz czym się różni definicja stringu:
"jestem sobie $zmienna"
'jestem sobie "zmienna"'
"jestem sobie \"zmienna\""
"jestem sobie" . $zmienna
silverwind
1 pierwszym jest użyty cudzysłów - szuka odwołania do innych zmiennych
2. apostrofy nie odwołują się -będzie dokładnie to co jest napisane
3. użycie \ powoduje że będą cudzysłowy w tekście
4.dodanie zmiennej do zdania

Ale to nie rozwiązuje mojego problemu wciąż mam jakieś błędy ja już jestem głupi z tego
pasman
spróbuj czegoś prostszego - funkcji pg_insert

chociaż może Cię nie doceniam..
silverwind
to część to chyba tak
  1. $query = 'INSERT INTO "osoby" ("Imie","Nazwisko","Wiek") VALUES' ;

a ta druga jak
  1. for($i=0; $i<50000; $i++)
  2. {
  3. $query .= '(`Ewa`,`Ciemala`,`87`),';
  4.  
  5. }


mam teraz taki błąd

ning: pg_query(): Query failed: BŁĄD: kolumna "ewa" nie istnieje LINE 1: ...T INTO "osoby" ("Imie","Nazwisko","Wiek") VALUES(`Ewa`,`Ciem... ^ in
viking
Ponownie " zamiast `, natomiast wiek jest pewnie liczbą więc bez dodatkowych ciapek.
silverwind
  1. for($i=0; $i<50000; $i++)
  2. {
  3. $query .= '("Ewa", "Ciemala",87)';
  4.  
  5. }


Warning: pg_query(): Query failed: BŁĄD: błąd składni w lub blisko "(" LINE 1: ...ie","Nazwisko","Wiek") VALUES("Ewa", "Ciemala",87)("Ewa", "C... ^
Masakra
viking
Przecinek po każdym VALUES. Spróbuj to ogarnąć czytając komunikaty albo dokumentację bo faktycznie masakra.
silverwind
Ja juz mam dośc widocznie jakiś głupi jestem chyba z 10 kobinacjii próbowałem


  1. for($i=0; $i<50; $i++)
  2. {
  3. $query .='("Ewa","Ciemala",87),';
  4.  
  5. }
  6.  
  7. $query = substr($query, 0, -1); // na końcu nie może być przecinka więc go ucinam
  8. pg_query($con,$query);




Warning: pg_query(): Query failed: BŁĄD: kolumna "Ewa" nie istnieje LINE 1: ...RT INTO "osoby" ("Imie","Nazwisko","Wiek") VALUES("Ewa","Cie... ^
Niech ktoś to napisze bo mnie poj.... Proszę
mmmmmmm
K..a mać. Ileż można pisać... W " wstawiasz nazwy kolumn. generalnie, jeżli nie mają żadnych udziwnień, typu polskie znaki, spacje, inne gówna, bądź mieszana wielkość liter, to i tu możesz olać cudzysłowia. Inne stringo w ' - aporstrofach.
Tak ma wyglądać kod SQL (PHP nie napiszę, bo mi się nie chce):
  1. INSERT INTO osoby("Imie", "Nazwisko", "Wiek") VALUES('Ewa', 'Ciamala', 87), ('Bożydar', 'Nowicki', 16), ...
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.