Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Blad Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
carlo497
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.12.2009

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


Moze ktos powiedziec gdzie tu jest blad? Dostaje komunikat Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /apache/apache-common/virt/virtuals/virt-699640/witryna/select.php on line 12
  1. <?php
  2. $connect = mysql_connect("xxx") or die ("Sprawdź połączenie z serwerem.");
  3.  
  4.  
  5. $query = "SELECT nazwa. brutto " .
  6. "FROM 2009p " .
  7. "WHERE producent = BOSCH " .
  8. $results = mysql_query($query)
  9.  
  10. while ($row = mysql_fetch_assoc($results)) {
  11. foreach ($row as $vall) {
  12. echo $vall;
  13. echo " - ";
  14. }
  15. echo "<br>";
  16. }
  17.  
  18. ?>
Go to the top of the page
+Quote Post
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


na pewno SELECT nazwa. brutto (IMG:style_emoticons/default/questionmark.gif) Sprawdź to, co chcesz wyciągnąć? Podaj strukturę tabeli.

Ten post edytował darko 19.12.2009, 17:27:43
Go to the top of the page
+Quote Post
carlo497
post
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.12.2009

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


Tabela. Chce wyciagnac nazwe i cene kazdego produktu, ktorego producentem jest bosh
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


zmiany:
1. SELECT nazwa, brutto
2. WHERE producent = 'BOSCH'

ps
trzymanie wszystkich danych włącznie z ceną i stanem magazynowym w polach typu varchar(255) nie jest najlepszym pomysłem

Ten post edytował darko 19.12.2009, 17:55:56
Go to the top of the page
+Quote Post
carlo497
post
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.12.2009

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


dalej ten sam blad
Go to the top of the page
+Quote Post
darko
post
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Pamiętaj, że w zapisie WHERE producent = 'BOSCH' istotna jest wielkość liter. Na pewno dałeś SELECT nazwa, brutto ? Zapytanie powinno być poprawne (ponieważ mysql_error() nie zwraca błędu), a baza nie jest czysta (banał, ale już kiedyś taka sytuacja miała miejsce)? Zrób tak, złącz zapytanie w jedną całość (w jednej linii nie rozrywając łańcucha znaków) i pokaż je jeszcze raz.
Go to the top of the page
+Quote Post
carlo497
post
Post #7





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.12.2009

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


Dalej ten sam komunikat tyle ze wsazuje na linie 8
  1. <?php
  2. $connect = mysql_connect("xxx") or die ("Sprawdź połączenie z serwerem.");
  3.  
  4.  
  5. $query = "SELECT nazwa, brutto " ."FROM 2009p " ."WHERE producent = 'Amica' " .$results = mysql_query($query)or die (mysql_error());
  6.  
  7. while ($row = mysql_fetch_assoc($results)) {
  8. foreach ($row as $vall) {
  9. echo $vall;
  10. echo " - ";
  11. }
  12. echo "<br>";
  13. }
  14.  
  15. ?>


EDIT
Zauwazylem ze nie importuje mi calej bazy tzn. co jakis czas mam puste pola w bazie. Moze to jest przyczyna tego problemu

Ten post edytował carlo497 20.12.2009, 12:52:05
Go to the top of the page
+Quote Post
lukasz_os
post
Post #8





Grupa: Zarejestrowani
Postów: 203
Pomógł: 55
Dołączył: 23.11.2008
Skąd: UKF

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


  1. $query = "SELECT nazwa, brutto " ."FROM 2009p " ."WHERE producent = 'Amica' " .$results = mysql_query($query)or die (mysql_error());


zamień na:
  1. $query = "SELECT nazwa, brutto " ."FROM 2009p " ."WHERE producent = 'Amica' ";
  2. $results = mysql_query($query)or die (mysql_error());

Go to the top of the page
+Quote Post
carlo497
post
Post #9





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.12.2009

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


lukasz_os; po wpisaniu tego co podales dostalem blad 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 '2009 WHERE producent = 'Amica'' at line 1
Zauwazylem ze baza ma powazne braki klik. Mam plik xls z cennikiem zapisywalem go jako txt i wrzucalem przez program Navicat do bazy lub w samej bazie dawalem import i zawsze mialem braki. Co robie zle?

Ten post edytował carlo497 20.12.2009, 13:33:29
Go to the top of the page
+Quote Post
darko
post
Post #10





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


upewnij się, że 2009p to prawidłowa nazwa tabeli, przyznam, że nigdy nie stosowałem nazwa tabel zawierających liczby i nie wiem jak się tutaj mysql zachowuje. Poza tym nazwa kolumny to "Producent", a nie "producent" oraz "Nazwa", a nie "nazwa". Przestrzegaj wielkości liter w nazwach kolumn

Ten post edytował darko 20.12.2009, 13:42:14
Go to the top of the page
+Quote Post
carlo497
post
Post #11





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.12.2009

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


Nazwy zawsze dokladnie sprawdzalem wielkosc liter takze. Dalej nie wiem jak zrobic zeby sie wszystkie dane zaimportowaly
Go to the top of the page
+Quote Post
darko
post
Post #12





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Pokaż jeszcze raz cały kod
Go to the top of the page
+Quote Post
carlo497
post
Post #13





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.12.2009

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


nie chodzi mi o kod tylko o baze. Na zdjeciu widac ze polowy danych nie importuje
  1. <?php
  2. $connect = mysql_connect("xxx") or die ("Sprawdź połączenie z serwerem.");
  3.  
  4.  
  5. $query = "SELECT nazwa, brutto " ."FROM 2009 " ."WHERE producent = 'Amica' " .$results = mysql_query($query)or die (mysql_error());
  6.  
  7. while ($row = mysql_fetch_assoc($results)) {
  8. foreach ($row as $vall) {
  9. echo $vall;
  10. echo " - ";
  11. }
  12. echo "<br>";
  13. }
  14.  
  15. ?>
Go to the top of the page
+Quote Post
darko
post
Post #14





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


No i źle, zamień:

$query = "SELECT nazwa, brutto " ."FROM 2009 " ."WHERE producent = 'Amica' " .$results = mysql_query($query)or die (mysql_error());

na

  1. $query = "SELECT Nazwa, brutto FROM 2009 WHERE Producent = 'Amica'";
  2. $results = mysql_query($query) or die (mysql_error());


ps. w końcu nazwa tabeli to 2009 czy 2009p ?

Ten post edytował darko 20.12.2009, 15:47:22
Go to the top of the page
+Quote Post
carlo497
post
Post #15





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.12.2009

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


komunikat 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 '2009 WHERE producent = 'Amica'' at line 1. Nazwa tabeli to 2009
Go to the top of the page
+Quote Post
darko
post
Post #16





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


1. Oczywiście w linii 2. dla mysql_connect podajesz kolejno nazwę: hosta, użytkownika i hasło ?
2. Zmodyfikowałeś linię 6. ?
3. spróbuj zamiast SELECT nazwa dać SELECT Nazwa
4. nie chce mi się wierzyć w to, że zapytanie nie wykonuje się, ponieważ pole Nazwa dla Producent = 'Amica' jest puste
5. zapytanie wygląda na poprawne (dla ostatniej struktury, którą podałeś), nie wiem czy wszystko dobrze zmieniłeś, może ktoś inny będzie Ci w stanie pomóc...

Pozdrawiam

Ten post edytował darko 20.12.2009, 15:51:08
Go to the top of the page
+Quote Post
carlo497
post
Post #17





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.12.2009

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


Tak, podaje wszystkie dane do logowania, wszystko zmodyfikowalem tak jak pisales. Po zmianie na Nazwa dalej nie dziala
Go to the top of the page
+Quote Post
darko
post
Post #18





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Wiem problemem jest nazwa tabeli złożona z liczb, użyj symbolu acutus:
from `2009`
czyli
  1. $query = "SELECT Nazwa, brutto FROM `2009` WHERE Producent = 'Amica'";


Ten post edytował darko 20.12.2009, 16:14:14
Go to the top of the page
+Quote Post
carlo497
post
Post #19





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 19.12.2009

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


Dziala (IMG:style_emoticons/default/yahoo.gif) Dzieki za pomoc
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: 23.09.2025 - 07:24