Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> INSERT INTO (mySQL) nie dziala
a600user
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 14.04.2007

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


Witam,

Mam sobie kod PHP, ktory zaklada tabele w bazie i potem probuje wpisac do niej dane. Tabela jest pusta, zreszta zakladanie tabeli dziala OK.
Problem jest, ze kod nie chce dzialac i wywala sie blad skladniowy (Syntax error).

  1. <?php
  2. $sql_02="INSERT INTO '$tablename' ('aktywna', 'typ') VALUES ('$aktywna', '$typ')"; 
  3.  $result_02=@mysql_query($sql_02);
  4.  if (!$result_02) {
  5. exit ('<P>Query Error : ' . mysql_error() . '</P>');
  6.  }
  7. ?>


podczas gdy wklepanie z konsoli linii w terminalu mySQLa:

INSERT INTO xxx (aktywna, typ) VALUES (1,1);

Dziala ....

Wie ktos, w czym tkwi przyczyna ? Zmienne sa OK, nazwy pol tez.

Dziekuje
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
wielokropek
post
Post #2





Grupa: Zarejestrowani
Postów: 34
Pomógł: 1
Dołączył: 23.04.2006

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


  1. <?php
  2. $sql_02="INSERT INTO $tablename ('aktywna', 'typ') VALUES ('$aktywna', '$typ')";
  3. ?>

Przy nazwie tabeli chyba nie potrzeba apostrofów.
Go to the top of the page
+Quote Post
rolnix
post
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 16.04.2005
Skąd: Białowieża

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


Przy nazwach pól i tabel stosujemy (chociaż nie musimy) tzw. apostrof podtyldowy - `xxx`. Przy wartościach są apostrofy normalne 'xxx'.


--------------------
Go to the top of the page
+Quote Post
PawelC
post
Post #4





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


  1. <?php
  2.  
  3.  $tablename=$_POST['tablename'];
  4.  $aktywna=$_POST['aktywna'];
  5.  $typ=$_POST['typ'];
  6.  $sql_02="INSERT INTO $tablename (`id`,`aktywna`, `typ`) VALUES ('null','$aktywna', '$typ')"; 
  7. $result_02=mysql_query($sql_02) or die(mysql_error());
  8. if (!$result_02) {
  9.  exit ('<P>Query Error : ' . mysql_error() . '</P>');
  10. }
  11.  ?>

Sprawdź ten kod powinien działać. A $tablename to pobierasz z formularza metodą post, czy w linku i metodą get?

Ten post edytował ExPlOiT 2.11.2007, 15:48:04
Go to the top of the page
+Quote Post
john_doe
post
Post #5





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


yo, pewnie masz jeszcze oprócz tych dwóch pól jakieś ID, które samo sie inkrementuje czy coś w tym stylu .
Musisz dać values ('', xxxxx,xxxxx) i przedtem tez i bedzie git
Go to the top of the page
+Quote Post
a600user
post
Post #6





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 14.04.2007

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


Cytat(john_doe @ 2.11.2007, 15:23:17 ) *
yo, pewnie masz jeszcze oprócz tych dwóch pól jakieś ID, które samo sie inkrementuje czy coś w tym stylu .
Musisz dać values ('', xxxxx,xxxxx) i przedtem tez i bedzie git


Witam ponownie,

Tak, baza zawiera znacznie wiecej pol, jednak dla przejrzystosci zmienilem kod tak, jakby mialo sie dodawac tylko kilka wartosci.
Pierwszym polem jest `polozenie` z autoinkrementacja.

I teraz mialem napisac, co chodzi, a co nie - gdyby nie to, ze teraz blad dotyczy pierwszego zapytania sql (w kodzie, ktory podalem chodzilo o drugie zapytanie). Pierwsze zapytanie zwyczajnie tworzy tabele i jest to CTRL+C / CTRL+V z dumpa sql-a, znaczy sie wyeksportowalem baze do pliku tekstowego i wycialem odpowiednie wpisy tworzace interesujaca mnie tabele. Jedynie nazwe tabeli zmienilem, bo ma byc ona co chwila inna (tak, tak) - i to jest odpowiedz do poprzednika, ktory pytal sie, skad biore $tablename. A wiec $tablename biore poprzez zlaczenie przedrostka i aktualnej daty, wiec zadne GETy, POSTy itd smile.gif
A powyzsza czesc skryptu to inicjalizator calej zabawy, w tym wlasnie bazy danych. Z tym, ze wlasnie przestala mi chodzic czesc tworzaca tabele w bazie, bardzo to dziwne.

Moze wrzuce blad, jaki teraz dostaje:
Query Error : 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 ''polozenie' int(6) NOT NULL auto_increment, 'aktywna' tinyint(1) NOT NULL, '' at line 2

I nie mam pojecia, jak sprawdzic, o co chodzi (moze jakies sugestie, jakis parser albo cokolwiec co da mi clue) ?
Linijka kodu odpowiadajaca powyzszemu to:
  1. <?php
  2. $sql_01="CREATE TABLE IF NOT EXISTS `$tablename` (
  3. 'polozenie' int(6) NOT NULL auto_increment,
  4. 'aktywna' tinyint(1) NOT NULL,
  5. ?>


Czyzby chodzilo o to, ze nie mozna wpisywac rekordu czesciowo, jesli pola maja ceche NOT NULL (czyli ze chcac wpisac jedna wartosc trzeba i tak sie przemeczyc i wpisac wszystkie 30 pol, czy ile tam tego mam) ? Jesli tak - to by sie zgadzalo, ze moj "skrot" byl batem na samego siebie, bo gdybym nie skracal, wszystko chodziloby.
Tylko o co teraz chodzi z tym bledem przy tworzeniu tabeli w bazie ?
Baza otwarta i wybrana (use), dalej nie mam pojecia, w czym rzecz.

Macie jakies pomysly ?

Dziekuje
Go to the top of the page
+Quote Post
PawelC
post
Post #7





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


daj mi nazwy kolumn w tabeli do której chcesz dodać dane, to Ci napisze ten skrypt i będziesz wiedział gdzie miałeś błędy.

Ten post edytował ExPlOiT 2.11.2007, 18:59:49
Go to the top of the page
+Quote Post
kevinsz
post
Post #8





Grupa: Zarejestrowani
Postów: 23
Pomógł: 2
Dołączył: 26.04.2007

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


Cytat(a600user @ 2.11.2007, 18:44:30 ) *
Moze wrzuce blad, jaki teraz dostaje:
Query Error : 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 ''polozenie' int(6) NOT NULL auto_increment, 'aktywna' tinyint(1) NOT NULL, '' at line 2

I nie mam pojecia, jak sprawdzic, o co chodzi (moze jakies sugestie, jakis parser albo cokolwiec co da mi clue) ?
Linijka kodu odpowiadajaca powyzszemu to:
  1. <?php
  2. $sql_01="CREATE TABLE IF NOT EXISTS `$tablename` (
  3. 'polozenie' int(6) NOT NULL auto_increment,
  4. 'aktywna' tinyint(1) NOT NULL,
  5. ?>


Nazwy kolumn mogą być albo w w takich apostrofach ` albo w ogóle bez. Ale "zwykłe" winksmiley.jpg apostrofy ' generują błąd w składni.
Go to the top of the page
+Quote Post
a600user
post
Post #9





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 14.04.2007

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


Cytat(ExPlOiT @ 2.11.2007, 18:52:20 ) *
daj mi nazwy kolumn w tabeli do której chcesz dodać dane, to Ci napisze ten skrypt i będziesz wiedział gdzie miałeś błędy.


Juz dziala, dzieki wszystkim.
Dwie rzeczy naraz pomogly: zmiana ' na podtyldowy ` wprzypadku nazw tabel oraz kolumn, no a po drugie ta autoinkrementacja smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 02:31