Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Niedzialajacy insert
Robertson
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 24.09.2004

Ostrzeżenie: (0%)
-----


Witam

Moj insert wyglada tak:

  1. <?php
  2. $sql = 'INSERT INTO import_csv (`pole1`, "'.$nazwa_kolumny.'") VALUES ( "'.$data[10].'", "'.$data[2].'")';
  3. ?>


i w tej postaci nie dziala, lecz jezeli zmiast zmiennej $nazwa_kolumny dam np. `pole2` to wszystko jest ok.
Nie mozna napisac tego w ten sposob?

Z gory dzieki

Robert
Go to the top of the page
+Quote Post
piotrekkr
post
Post #2





Grupa: Zarejestrowani
Postów: 386
Pomógł: 25
Dołączył: 28.09.2005

Ostrzeżenie: (0%)
-----


a jaki blad generuje mysql (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Robertson
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 24.09.2004

Ostrzeżenie: (0%)
-----


Zadnego nie generuje, poprostu nie dodaje wartosci
Go to the top of the page
+Quote Post
Lonas
post
Post #4





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


  1. <?php
  2.  
  3. $sql = 'INSERT INTO import_csv (`pole1`, "'.$nazwa_kolumny.'") VALUES ( "'.$data[10].'", "'.$data[2].'")' or die(mysql_error());
  4.  
  5. ?>
proponuje jeszcze tak sprawidzić

Ten post edytował L.Pociask 22.07.2006, 18:21:10
Go to the top of the page
+Quote Post
thornag
post
Post #5





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Wyprintuj sobie zmienne przed zapytaniem i zobacz czy cos wogole zawieraja, jesli tak to pewnie blad skladni.

  1. INSERT INTO tabela SET pole1 = $zmianna1, $pole2 = $zmienna2


Ewentualnie sprobuj tak jak napisalem.
Go to the top of the page
+Quote Post
cadavre
post
Post #6





Grupa: Zarejestrowani
Postów: 472
Pomógł: 7
Dołączył: 7.12.2005
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $sql = 'INSERT INTO import_csv (`pole1`, "'.$nazwa_kolumny.'") VALUES ( "'.$data[10].'", "'.$data[2].'")' or die(mysql_error());
  3. ?>
To jest kod który używasz? Bo jeśli tak to wiem czemu nic Ci nie pokazuje i nie działa... Gdzie masz mysql_query();?

Poprawnie:
  1. <?php
  2. $sql = "INSERT INTO import_csv (`pole1`, '" . $nazwa_kolumny . "') VALUES ( '" . $data[10] . "', '" . $data[2] . "')";
  3. ?>


MySQL określa, iż nazwy pól powinny wpisywane być w takich cudzysłowach: `` a wartości, które się nadaje w takich: ''. Staraj się więc $sql określać pośród: "" i `` = ''. Np:
  1. <?php
  2. $sql = "SELECT `pole`, `pole` WHERE `id`='123'";
  3. ?>


Ten post edytował cadavre 22.07.2006, 20:25:13
Go to the top of the page
+Quote Post
TomASS
post
Post #7





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


@cadavre:
Wydaje Nam się, aczkolwiej ja i manual możemy się mylić, żę nazwy pól nie muszą być zawarte w znakach `. Dodatkowo, jeśli pole jest typu liczbowego (INT), wartości nie powinny być w znakach '.

Czyli całkiem poprawne jest zapytanie (id jest typu int):
  1. <?php
  2. $sql = "SELECT pole, pole2 WHERE id=123";
  3. ?>



@Robertson:
Co Ci wyświetla taki oto kod:
  1. <?php
  2. //wpierw się połącz z bazą danych mysql_connect(...);
  3.  
  4. $sql = 'INSERT INTO import_csv (`pole1`, "'.$nazwa_kolumny.'") VALUES ( "'.$data[10].'", "'.$data[2].'")';
  5. $result = mysql_query($sql);
  6. echo $sql;
  7. ?>

?
Go to the top of the page
+Quote Post
koobs
post
Post #8





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 22.07.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


problemem jest raczej nazwa kolumny zawarta w cudzyslowiach

dla takiego zapytania:
  1. INSERT INTO uptime_logins( `user_ip` , "user_login" )
  2. VALUES (
  3. '2.2.2.2', 'sss'
  4. )

wyswietla nastepujacy blad:
Cytat
#1064 - 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 '"user_login") values ('2.2.2.2', 'sss')' at line 1

po zamianie zapytanie na:
  1. INSERT INTO uptime_logins (`user_ip`, `user_login`) VALUES ('2.2.2.2', 'sss')
zapytanie zostalo wykonane
Go to the top of the page
+Quote Post
Robertson
post
Post #9





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 24.09.2004

Ostrzeżenie: (0%)
-----


Witam
Dziekuje za pomoc.

Nie wiem dlaczego ale dziala mi to zapisane tylko w ten sposob:

  1. <?php
  2. $sql = "INSERT INTO import_csv (`pole1`, $nazwa_kolumny) VALUES ($a, $b)";
  3. $result = mysql_query ($sql) or die (mysql_error());
  4. ?>



Insert ten wkleja mi dane z pliku csv, teraz nie wiem jak zrobic aby pominal pierwszy wiersz z nazwami kolumn :smutny:
Go to the top of the page
+Quote Post
koobs
post
Post #10





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 22.07.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


dziala poniewaz nazwa kolumny nie musi zawierac -> ` jednakze wczesniej wrzucales cudzyslow i on wszystko kopal

jednakze twoje zapytanie przestanie dzialac gdy pod zmienna $a lub $b podstawisz jakikolwiek string
Go to the top of the page
+Quote Post
Robertson
post
Post #11





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 24.09.2004

Ostrzeżenie: (0%)
-----


No i niestety tak jest ;-(
Go to the top of the page
+Quote Post
thornag
post
Post #12





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Ja jak juz pisalem jestem zwolennikiem budowania zapytan w stylu

  1. INSERT INTO tabela SET pole = 'wartosc', pole2 = 'wartosc2'


Nie ma problemu z omijaniem wartowsci z cudzyslowami itp.

Co do ominiecia pierwszego wiersza. Wczytaj plik do tablicy, a pozniej zacznij interacje od drugiego elementu tej tablicy. Wten sposob ominiesz pierwsza linijke z nazwami, i przejdziesz od razu do drugiej.

Pozdrawiam
Go to the top of the page
+Quote Post
Robertson
post
Post #13





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 24.09.2004

Ostrzeżenie: (0%)
-----


  1. INSERT INTO tabela SET pole1 = $zmianna1, $pole2 = $zmienna2


Czy SET nie jest uzywane tylko przy UPDATE?
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Czy SET nie jest uzywane tylko przy UPDATE?
Jakbysmy zajrzeli do manuala, to bysmy wiedzieli ze nie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 08:40