Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Zapytanie
Forum PHP.pl > Forum > Przedszkole
Anonymous
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.
kavka
  1. SELECT one FROM TABLE WHERE two = 'A2'


przy nazwach tabel i kolumn nie stosuje się cudzysłowu
Anonymous
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"?
kavka
poczytaj tutaj: http://www.kess.snug.pl/index.php?sid=10&pid=43
Kicok
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
Anonymous
Dziekuje za pomoc smile.gif
Natomiast mam następny problem. Nie będę tworzył nowego tematu bo jest to niejako kontynuacja poprzedniego 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ą?
kosmos
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 smile.gif

Pozdrawiam
kwiateusz
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. ?>
kosmos
Zgadza się mój błąd smile.gif
powinno być tak jak napisał kwiateusz
  1. <?php
  2. 'SELECT * FROM table WHERE name = "'.$name.'"';
  3. ?>
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.