Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] Pole autoincrement
cornholio666
post 29.08.2007, 18:48:10
Post #1





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

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


Witam,

przykładowa tabela:

  1. id | imie
  2. ----------
  3. 1 | x
  4. 2 | y
  5. 3 | z


id - autoincrement

  1. SELECT id FROM tabela WHERE id = 0


Wykonuje takie zapytanie i skrypt nie zgłasza błędu, za to zwraca 1. Dlaczego ?

Ten post edytował cornholio666 29.08.2007, 18:48:52


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Earth
post 29.08.2007, 18:52:08
Post #2





Grupa: Zarejestrowani
Postów: 169
Pomógł: 2
Dołączył: 6.12.2006

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


  1. SELECT imie FROM tabela WHERE id = 0


//Sorry nie doczytałem, myślałem że chodzi o to że zwraca numer id, a nie imię sciana.gif

Ten post edytował Earth 29.08.2007, 18:53:53
Go to the top of the page
+Quote Post
Cienki1980
post 29.08.2007, 19:23:18
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


A sprawdzasz zapytanie z poziomu bazy czy php questionmark.gif

Może kwestia leży w kodzie i zwraca Ci true co jest interpretowane przez php jako 1.

Ja wykonując takie zapytanie z poziomu phpmyadmina dostaje
Cytat
MySQL zwrócił pusty wynik (zero rekordów).


--------------------
404
Go to the top of the page
+Quote Post
cornholio666
post 29.08.2007, 19:46:56
Post #4





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

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


Sprawdzam z poziomu php.


  1. <?php
  2. $result = mysql_query($query_string); 
  3. echo $result;
  4. ?>


W wyniku dostaje 1

Może to ma jakies znaczenie ze tabela jest typu INNODB?

Ten post edytował cornholio666 29.08.2007, 19:47:42


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
Cienki1980
post 29.08.2007, 19:52:22
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


To teraz zaglądamy do manuala i czytamy co zwraca funkcja mysql_query

I wszystko powinno być jasne. biggrin.gif


--------------------
404
Go to the top of the page
+Quote Post
cornholio666
post 29.08.2007, 19:59:55
Post #6





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

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


Cytat
mysql_query() zwraca identyfikator wyniku (lub FALSE w przypadku niepowodzenia)


1. Czyli zwrociło mi indentyfikator 1, co to znaczy?
2. Dlaczego nie wywala błędu skoro wiadomo że id nie może byc 0 ?


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
Cienki1980
post 29.08.2007, 20:07:29
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Ad1. Identyfikator połączenia to identyfikator połączenia .... nawet nie wiem jak to wytłumaczyć .... numer linii na autobusie/tramwaju ... patrząc na niego wiesz gdzie dojedziesz ... podobnie potraktuj identyfikator połączenia

Ad2. Zapytanie sprawdza warunek, nie znajduje żadnych rezultatów więc zwraca pusty zestaw ... tak samo jakbyś napisał w pytaniu where id=99999 ... jak nie będziesz miał takiego rekordu to zwróci Ci pusty zestaw.


--------------------
404
Go to the top of the page
+Quote Post
cornholio666
post 29.08.2007, 20:11:37
Post #8





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

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


Identyfikator połączenia - wiem co to jest, nie wiedzialem ze to jest to samo co identyfikator wyniku.


Czyli najlepszym rozwizaniem bedzie dodatkowe zapytanie które sprawdzi czy takie ID istnieje ?


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
Cienki1980
post 29.08.2007, 20:34:04
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Ale po co questionmark.gif

Przecież mysql_query w przypadku zapytania SELECT zwraca Ci identyfikator połączenia a nie wynik ....
wykonaj mysql_query a potem mysql_fetch_* żeby sprawdzić czy rekord istnieje.


--------------------
404
Go to the top of the page
+Quote Post
reversend
post 29.08.2007, 21:43:00
Post #10





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 27.07.2007

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


albo
mysqli_num_rows($result) - funkcja zwraca liczbę wierszy więc w tym przypadku bedzie 0
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 Wersja Lo-Fi Aktualny czas: 13.08.2025 - 23:13