Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Blad Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
Forum PHP.pl > Forum > Przedszkole
carlo497
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. ?>
darko
na pewno SELECT nazwa. brutto questionmark.gif Sprawdź to, co chcesz wyciągnąć? Podaj strukturę tabeli.
carlo497
Tabela. Chce wyciagnac nazwe i cene kazdego produktu, ktorego producentem jest bosh
darko
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
carlo497
dalej ten sam blad
darko
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.
carlo497
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
lukasz_os
  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());

carlo497
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?
darko
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
carlo497
Nazwy zawsze dokladnie sprawdzalem wielkosc liter takze. Dalej nie wiem jak zrobic zeby sie wszystkie dane zaimportowaly
darko
Pokaż jeszcze raz cały kod
carlo497
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. ?>
darko
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 ?
carlo497
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
darko
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
carlo497
Tak, podaje wszystkie dane do logowania, wszystko zmodyfikowalem tak jak pisales. Po zmianie na Nazwa dalej nie dziala
darko
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'";
carlo497
Dziala yahoo.gif Dzieki za pomoc
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.