Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Niedzialajacy insert
Forum PHP.pl > Forum > Przedszkole
Robertson
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
piotrekkr
a jaki blad generuje mysql questionmark.gif
Robertson
Zadnego nie generuje, poprostu nie dodaje wartosci
Lonas
  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ć
thornag
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.
cadavre
  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. ?>
TomASS
@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. ?>

?
koobs
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
Robertson
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:
koobs
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
Robertson
No i niestety tak jest ;-(
thornag
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
Robertson
  1. INSERT INTO tabela SET pole1 = $zmianna1, $pole2 = $zmienna2


Czy SET nie jest uzywane tylko przy UPDATE?
nospor
Cytat
Czy SET nie jest uzywane tylko przy UPDATE?
Jakbysmy zajrzeli do manuala, to bysmy wiedzieli ze nie smile.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-2025 Invision Power Services, Inc.