Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z zapytaniem MySQL
Tadek888
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 21.04.2009
Skąd: Białogóra

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


Witam serdecznie.

Domyślam się że poruszę temat i połowa odpiszę że od tego są frameworki ale bardzo proszę. Jeśli już ktoś chce to niech odpowie na to zagadnienie smile.gif

Mam taki oto kod:
  1. $cat_list = '1,2,3,4,5';
  2. $todo = mysql_query("DELETE FROM ".TABELA." WHERE ".ID." = '$id' AND ".CAT." NOT IN ('$cat_list')", $link);


z listingu domyślacie się jak powinien działać ale nie działa więc to źle sformułowałem.

- gdzie błąd
- jakaś wkazówka
- jak wygooglać
...

Bardzo proszę o pomoc smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
piotrala
post
Post #2





Grupa: Zarejestrowani
Postów: 15
Pomógł: 4
Dołączył: 20.05.2007
Skąd: Kutno

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


Cytat(Tadek888 @ 25.05.2012, 23:14:54 ) *
  1. $cat_list = '1,2,3,4,5';
  2. $todo = mysql_query("DELETE FROM ".TABELA." WHERE ".ID." = '$id' AND ".CAT." NOT IN ('$cat_list')", $link);

A czemu w ogóle dajesz te cudzysłowy i kropki wokół słów TABELA, ID, CAT?
Domyślam się, że PHP traktuje to wtedy jako nazwy stałych (których nie znajduje), a nie widzę powodu, dla którego nazwy pól w tabeli miałbym zapisywać w stałych smile.gif

Kolejna sprawa: totalnie nie rozumiem warunku ID = '$id'. Skąd bierzesz ten $id? Jaka jest struktura tabeli? Gdybyś pokazał strukturę tabeli, to by pomogło.
Jeżeli masz tabelę z kluczem podstawowym w jednej kolumnie, to po co jest ten drugi warunek z CAT?
Go to the top of the page
+Quote Post
Tadek888
post
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 21.04.2009
Skąd: Białogóra

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


Jeśli chodzi o stałe - to właśnie tak to działa smile.gif
Ze stałymi wszystko jest ok są znajdowane.
W innych zapytaniach działa tak jak trzeba.

Stała id nie jest id tabeli z indeksem PRIMARY.

Chodzi tutaj o podopwiedź odnośnie składni.

Chcę skasować wszystkie wpisy które mają ID np. 20 i CAT inny niż podany w ciągu czyli 1,2,3,4,5 używając NOT IN ()

lub czegoś innego co spowoduje że moje zapytanie zacznie robić z wpisami to co chcę smile.gif

Dobra już nie trzeba smile.gif
Naprawiłem.

Stary:
  1. $cat_list = '1,2,3,4,5';
  2. $todo = mysql_query("DELETE FROM ".TABELA." WHERE ".ID." = '$id' AND ".CAT." NOT IN ('$cat_list')", $link);


Nowy:
  1. $cat_list = '1,2,3,4,5';
  2. $todo = mysql_query("DELETE FROM ".TABELA." WHERE ".ID." = '$id' AND ".CAT." NOT IN (".$cat_list.")", $link);


W jakiś dziwny sposób PHP ładowało do zapytania cudzysłów i mimo że teoretycznie oba zapisy powinny prowadzić do jednego rozwiązania to tak nie było.
Może komuś się to przyda a jeśli nie, to można zamknąć, zarchiwizować, wyrzucić ...
smile.gif

Cytat(piotrala @ 25.05.2012, 23:42:19 ) *
A czemu w ogóle dajesz te cudzysłowy i kropki wokół słów TABELA, ID, CAT?
Domyślam się, że PHP traktuje to wtedy jako nazwy stałych (których nie znajduje), a nie widzę powodu, dla którego nazwy pól w tabeli miałbym zapisywać w stałych smile.gif

Chociażby dlatego że można zrobić prosty komponent jak newsy. Później go udoskonalać i przeszczepiać do innej strony. Wystarczy wtedy zmienić wartość stałej w jednym pliku aby zastosowało to się w całym komponencie. Wydaje mi się że to wystarczający powód smile.gif tym bardziej że małe strony z takimi komponentami można trzymać w jednej bazie danych smile.gif

Ten post edytował Tadek888 26.05.2012, 01:33:20
Go to the top of the page
+Quote Post
piotrala
post
Post #4





Grupa: Zarejestrowani
Postów: 15
Pomógł: 4
Dołączył: 20.05.2007
Skąd: Kutno

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


Cytat(Tadek888 @ 26.05.2012, 02:40:35 ) *
Stary:
  1. $cat_list = '1,2,3,4,5';
  2. $todo = mysql_query("DELETE FROM ".TABELA." WHERE ".ID." = '$id' AND ".CAT." NOT IN ('$cat_list')", $link);

W jakiś dziwny sposób PHP ładowało do zapytania cudzysłów i mimo że teoretycznie oba zapisy powinny prowadzić do jednego rozwiązania to tak nie było.

No tak faktycznie, i wtedy MySQL myślał, że podajesz mu stringa smile.gif Nie zauważyłem tego drobiazgu późnym wieczorem.
Cytat(Tadek888 @ 26.05.2012, 02:40:35 ) *
Wystarczy wtedy zmienić wartość stałej w jednym pliku aby zastosowało to się w całym komponencie. Wydaje mi się że to wystarczający powód smile.gif tym bardziej że małe strony z takimi komponentami można trzymać w jednej bazie danych smile.gif

Hmm mądre rozwiązanie 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: 19.08.2025 - 19:47