Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Zapytanie
-Anonymous-
post
Post #1





Goście







Witam,
Tworze baze o nazwie "base" i tabele "table", która ma dwie kolumny "one" i "two". Nastepnie w pierwszym wierszu w "one" dodaje "A1", w "two" "A2", w nastepnym wierszu to samo ale zamiast A daje B czyli bedzie B1 i B2.
Jestem połączony z localhost i z bazą "base". Utworzyłem nastepujące pytanie:
  1. mysql_query("SELECT 'one' FROM 'table' WHERE 'two'='A2'")

Jak wyświetlić wynik czyli "A1"? Nie mogłem poradzić sobie z tym mysql_fetch_[...] Cały czas wywalało błąd.
Z góry dzieki za pomoc.
Go to the top of the page
+Quote Post
kavka
post
Post #2





Grupa: Zarejestrowani
Postów: 81
Pomógł: 2
Dołączył: 9.07.2008
Skąd: Zduńska Wola/Wrocław

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


  1. SELECT one FROM TABLE WHERE two = 'A2'


przy nazwach tabel i kolumn nie stosuje się cudzysłowu

Ten post edytował kavka 12.07.2008, 16:18:54
Go to the top of the page
+Quote Post
-Anonymous-
post
Post #3





Goście







W internecie natrafiłem na kursy w których wszytsko było przedstawione w cudzysłowiach. Ale skoro uważasz, że tak jest poprawnie to ok.
Jak zrobić aby przeglądarka zwróciła wynik tego zapytania czyli "A1"?
Go to the top of the page
+Quote Post
kavka
post
Post #4





Grupa: Zarejestrowani
Postów: 81
Pomógł: 2
Dołączył: 9.07.2008
Skąd: Zduńska Wola/Wrocław

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


poczytaj tutaj: http://www.kess.snug.pl/index.php?sid=10&pid=43
Go to the top of the page
+Quote Post
Kicok
post
Post #5





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Cytat
W internecie natrafiłem na kursy w których wszytsko było przedstawione w cudzysłowiach. Ale skoro uważasz, że tak jest poprawnie to ok.


Najprawdopodobniej były to "odwrócone apostrofy" (znajdziesz je pod tyldą). Może się przydać, gdy będziesz chciał zrobić kolumnę o nazwie zarezerwowanej przez MySQL, np FROM albo DATE
Go to the top of the page
+Quote Post
-Anonymous-
post
Post #6





Goście







Dziekuje za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Natomiast mam następny problem. Nie będę tworzył nowego tematu bo jest to niejako kontynuacja poprzedniego (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Poniższy kod działa bez zarzutów i funkcja mysql_num_rows() zwróci 1.

  1. [...]
  2. $query = 'SELECT * FROM table WHERE name = "Kowalski"';
  3. $wynik = mysql_query($query) OR die ('Error');
  4. echo mysql_num_rows($wynik);
  5. [...]


Natomiast skrypt, który jest niżej ma małą modyfikacje i już jest zwracane 0, co w dalszym działaniu uniemożliwia wyświetlenie tablicy.

  1. [...]
  2. $name = 'Kowalski';
  3. $query = 'SELECT * FROM table WHERE name = "$name"';
  4. $wynik = mysql_query($query) OR die ('Error');
  5. echo mysql_num_rows($wynik);
  6. [...]


Wyjaśni mi ktoś dlaczego metoda ze zmienną $name nie funkcjonuje tak jak metoda bez niej? Jak zapisać poprawnie zmienną?
Go to the top of the page
+Quote Post
kosmos
post
Post #7





Grupa: Zarejestrowani
Postów: 367
Pomógł: 17
Dołączył: 4.03.2008

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


Jeżeli piszesz tak:

  1. <?php
  2. $query = 'SELECT * FROM table WHERE name = "Kowalski"';
  3. ?>

To następuje zwrot relacji w postaci tych krotek tabeli table gdzie imię jest identyczne z Kowalski.


Jeśli imię Kowalski przypiszesz do zmiennej name to zmieniasz zapytania na następujące:
  1. <?php
  2. $name = 'Kowalski';
  3. $query = 'SELECT * FROM table WHERE name = $name';
  4. $wynik = mysql_query($query) or die ('Error');
  5. ?>

Różni się od Twojego kodu tym, że zmienną $name podałem bez cudzysłowu.

Twój kod gdzie miałeś :
  1. <?php
  2. .
  3. .
  4. $name = 'Kowalski';
  5. $query = 'SELECT * FROM table WHERE name = "$name"';
  6. .
  7. .
  8. ?>


Powodował że w bazie poszukiwany był rekord w którym atrybut name przyjmowałby wartość $name <-- dosłownie taki ciąg znaków.

Poczytaj o zapytaniach SQL, zmiennych w tychże zapytaniach.
Myślę że przedstawiłem to w najprostszy sposób, jeśli nadal nie rozumiesz to napisz czego konkretnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam

Ten post edytował kosmos 12.07.2008, 23:07:18
Go to the top of the page
+Quote Post
kwiateusz
post
Post #8


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




a o ile mi wiadomo to miedzy apostrofami (') zmienne nie sa zamieniane na ich wartosci wiec
  1. <?php
  2. 'SELECT * FROM table WHERE name = $name'
  3. ?>
w ogóle nie powinno zadziałać, a
  1. <?php
  2. 'SELECT * FROM table WHERE name = "$name"';
  3. ?>
szuka w bazie rekordu z z name równemu $name nie kowalski wiec jak juz to
  1. <?php
  2. 'SELECT * FROM table WHERE name = "'.$name.'"';
  3. ?>
Go to the top of the page
+Quote Post
kosmos
post
Post #9





Grupa: Zarejestrowani
Postów: 367
Pomógł: 17
Dołączył: 4.03.2008

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


Zgadza się mój błąd (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
powinno być tak jak napisał kwiateusz
  1. <?php
  2. 'SELECT * FROM table WHERE name = "'.$name.'"';
  3. ?>
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: 27.08.2025 - 07:41