Gość l3szcz Zgłoś post Napisano Wrzesień 4, 2013 Robię skrypt, który ma na celu pobieranie newsów z bazy danych. Najgorsze co mogło się przytrafić to błąd o takiej postaci: Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/xxxxxxxxxx/public_html/index.php on line 99 Nie jestem w stanie tego wyjaśnić, jak mam naprawić też nie wiem, wszystko wygląda poprawnie, polecenia w phpmyadmin przechodzą bezbłędnie. Tu linia 99 i poprzednie: #$query = "SELECT * FROM news ORDER BY id"; // przy tym tez ten sam błąd $query = "SELECT * FROM 'news' ORDER BY id"; $sql = mysql_query($query); while($rekord = mysql_fetch_assoc($sql)) { $id = $rekord[0]; $nazwa = $rekord[1]; $data = $rekord[2]; $autor = $rekord[3]; $tresc = $rekord[4]; echo '<ul>'.$nazwa.' <li>Autor: '.$autor.'</li> <li>Data: '.$data.'</li> </ul><br />'; // 4 echo '<ul>'.$tresc.'</ul><br />'; echo '<li><a href="news.php?id='.$id.'" target="_blank">Wi뤥j informacji</a></li>'; } Udostępnij ten post Link to postu Udostępnij na innych stronach
Waleq 10 Zgłoś post Napisano Wrzesień 4, 2013 Wielkość liter w nazwie tabeli się zgadza? Jeśli tak to spróbuj takie zapytanie: $query = "SELECT * FROM `news` ORDER BY id"; Udostępnij ten post Link to postu Udostępnij na innych stronach
PapaSmerf 497 Zgłoś post Napisano Wrzesień 4, 2013 Do poczytania: http://stackoverflow.com/questions/2122721/what-are-the-differences-between-backtick-and-single-quote-can-i-use-if-stateme http://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double-quotes-and-backticks Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Kamikadze Zgłoś post Napisano Wrzesień 4, 2013 http://pl.wikibooks.org/wiki/PHP/Jak_to_si%C4%99_robi%C5%82o_kiedy%C5%9B%3F Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość l3szcz Zgłoś post Napisano Wrzesień 4, 2013 No database selected Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/xxxxxxxxxxx/public_html/index.php on line 101 Okazalo sie ze w ogole nie laczy.. $db = mysql_connect('127.0.0.1', 'pcpr_news' , 'ttt123'); $dbs = mysql_select_db("pcpr_news"); Korzystam z mysql ponieważ serwer docelowy nie ma obsługi mysqli (firma dla której pisze strone ma hosting z internetdsl.pl ) Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość l3szcz Zgłoś post Napisano Wrzesień 4, 2013 Okazalo sie, ze zabraklo uprawnien Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość l3szcz Zgłoś post Napisano Wrzesień 6, 2013 Dobra, problem mam dalej inny, też prawdopodobnie z zapytaniem: SELECT * FROM tabelka WHERE 'user'='l3szcz' W PHPMyAdmin po wykonaniu polecenia wyświetla się: MySQL zwrócił pusty wynik (zero wierszy). ( Wykonanie zapytania trwało 0.0003 sekund(y) ) Z tabeli chce wyciągnąć kolumny id, mail, user. Wypełniłem testowo kolumny danymi: id = '1' mail = 'admin@localhost' user = 'l3szcz' Co może być nie tak? Udostępnij ten post Link to postu Udostępnij na innych stronach
Waleq 10 Zgłoś post Napisano Wrzesień 6, 2013 W postach powyżej już dostałeś kilka linków. Jeśli przeczytasz te artykuły to zrozumiesz różnice pomiędzy `, a ' Udostępnij ten post Link to postu Udostępnij na innych stronach
Pan Kot 1535 Zgłoś post Napisano Wrzesień 6, 2013 Trochę faceplam panie l3szcz . 'user'='l3szcz' Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość l3szcz Zgłoś post Napisano Wrzesień 11, 2013 Dobra, kolejny problem: Nie można dodać artykułu z powodu błędu 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 ''admin', '2013-09-11', 'article', 'test')' at line 1 Tak wygląda zapytanie: (chodzi mi o zapytanie $mysql2, $mysql dodaje sie poprawnie) $login = $baza['nick']; $article_title = $_POST['article_title']; $article_text = $_POST['article_text']; $mysql = mysql_query("INSERT INTO articles (NULL, '$article_title', '$time', '$login', '$article_text')"); $typ = $_GET['add']; $mysql2 = mysql_query("INSERT INTO logs ('$login', '$time', '$typ', '$article_title')"); Udostępnij ten post Link to postu Udostępnij na innych stronach
maniack 403 Zgłoś post Napisano Wrzesień 11, 2013 (edytowany) . Edytowano Wrzesień 13, 2017 przez maniack (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość l3szcz Zgłoś post Napisano Wrzesień 11, 2013 W tej tabeli nie mam kolumny id. Udostępnij ten post Link to postu Udostępnij na innych stronach
Łukasz Ostrowski 593 Zgłoś post Napisano Wrzesień 11, 2013 Gdzie Ty się tego phpa uczyłeś..? 1 Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość l3szcz Zgłoś post Napisano Wrzesień 12, 2013 Samouk Na szafce mam takie pozycje: http://helion.pl/ksiazki/phmsro.htm http://helion.pl/ksiazki/ph5lek.htm http://helion.pl/ksiazki/twswpp.htm Zapytania sformułowane praktycznie tak samo działają, nie rozumiem więc dlaczego to nie działa Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Kamikadze Zgłoś post Napisano Wrzesień 12, 2013 (edytowany) Może nie jestem jakimś geniuszem z PHP/MySQL, ale dzięki za linki do książek, których nie kupować $mysql = mysql_query("INSERT INTO articles (NULL, '$article_title', '$time', '$login', '$article_text')"); $typ = $_GET['add']; $mysql2 = mysql_query("INSERT INTO logs ('$login', '$time', '$typ', '$article_title')"); Ja bym to zamienił na mniej więcej coś takiego: $zapytanie1 = "INSERT INTO `articles` (`id?(albo coś co tu masz)`, `tytul_artykulu`, `artykul`) VALUES ('', '$article_title', '$time', '$login', '$article_text')"; $idzapytania = mysql_query($zapytanie1); $zapytanie2 = "INSERT INTO `logs` (`id`, `login`, `czas`, `typ`, `tytul`) VALUES ('', '$login', '$time', '$typ', '$article_title')"; $idzapytani2 = mysql_query($zapytanie1); I dorób sobie pola ID!!! Edytowano Wrzesień 12, 2013 przez Kamikadze (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość l3szcz Zgłoś post Napisano Wrzesień 12, 2013 Samych zapytań mysql się uczyłem przez php.net Trochę pokaleczyłem to ;( Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Kamikadze Zgłoś post Napisano Wrzesień 12, 2013 Ja podstawy brałem stąd: http://webmade.org/kursy-online/kurs-mysql.php polecam ci na początek, ale później poczytaj o bezpieczeństwie. Na początek to: http://helion.pl/ksiazki/php5-bezpieczne-programowanie-leksykon-kieszonkowy-jacek-ross,php5lk.htm Jest kilka ciekawych tricków w niej i dużo teorii jak na tak małą książkę. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość l3szcz Zgłoś post Napisano Wrzesień 12, 2013 Też tą książeczkę mam, z webmade sie uczyłem sesji Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Kamikadze Zgłoś post Napisano Wrzesień 12, 2013 Sprawdzałeś to co ci wkleiłem? Tylko przerób tam pod swoje dane bo wpisałem przykładowe Udostępnij ten post Link to postu Udostępnij na innych stronach
blackfire 185 Zgłoś post Napisano Wrzesień 18, 2013 Ja bym to zamienił na mniej więcej coś takiego: $zapytanie1 = "INSERT INTO `articles` (`id?(albo coś co tu masz)`, `tytul_artykulu`, `artykul`) VALUES ('', '$article_title', '$time', '$login', '$article_text')"; $idzapytania = mysql_query($zapytanie1); $zapytanie2 = "INSERT INTO `logs` (`id`, `login`, `czas`, `typ`, `tytul`) VALUES ('', '$login', '$time', '$typ', '$article_title')"; $idzapytani2 = mysql_query($zapytanie1); I dorób sobie pola ID!!! Primo: Po czym wnosisz, że przedpiśća nie ma kolumny na klucz główny? NULL jako pierwszy parametr sugeruje (niestandardowe, ale używalne w mysqlu) użycie domyślnej wartości. Jeżeli pierwszą kolumną w definicji był właśnie klucz główny, to NULL jest o niebo zdrowsze niż '' (chociaż w zasadzie to taką kolumnę należałoby pominąć). SQL l3szcza jest fatalny, ale to akurat chyba najmniejszy z jego problemów. Secundo: UTFG: SQL injection. Właśnie wystawiłeś całą swoją bazę internetom do zapisu. l3szcz zresztą też. Tertio: mysql_query. Proszę Cię (i przedpiścę), nie w XXI wieku. Nie po to powstało PDO, żeby to truchło jeszcze ruszać. Zapomnijcie o istnieniu tak niskopoziomowych i skopanych na etapie samego projektowania funkcji. Quarto: l3szcz, użyj jakiegoś frameworka, nie męcz się z gołym PHPem. Np. tutaj sobie poczytaj: http://webmastah.pl/ Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Kamikadze Zgłoś post Napisano Wrzesień 18, 2013 Ale żeś mu pomógł normalnie... Kolega chce się nauczyć jakichś podstaw a ty mu frameworka prezentujesz... Zamiast rzucić ciekawymi linkami do tutków, artykułów to najlepiej powiedzieć że coś jest złe bo jest złe... Udostępnij ten post Link to postu Udostępnij na innych stronach
blackfire 185 Zgłoś post Napisano Wrzesień 18, 2013 Ale żeś mu pomógł normalnie... Kolega chce się nauczyć jakichś podstaw a ty mu frameworka prezentujesz... Zamiast rzucić ciekawymi linkami do tutków, artykułów to najlepiej powiedzieć że coś jest złe bo jest złe... Największą pomocą będzie jak ZOSTAWI GOŁE PHP W CHOLERĘ. To nieodwracalnie uszkadza mózg i wpaja najgorsze możliwe wzorce. Piszę całkowicie serio. PHP przykryte jakimś używalnym frameworkiem (na co dzień piszę w Django, więc z głowy nie wiem, który jest używalny, dlatego odesłałem do webmastah) może być fajną platformą do developmentu. Ale takie gołe: <? mysql_query("INSERT INTO tab VALUES($_GET[foo])") ?> powinno być prawnie zakazane pod karą rozstrzelania. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Kamikadze Zgłoś post Napisano Wrzesień 18, 2013 Z tym ostatnim to się zgadzam bo sam na podobnę rozwiązania się nadziałem, ale wystarczy odpowiednie filtrowanie rzeczy idących od usera i nagle 99% problemów znika. Udostępnij ten post Link to postu Udostępnij na innych stronach
blackfire 185 Zgłoś post Napisano Wrzesień 18, 2013 Z tym ostatnim to się zgadzam bo sam na podobnę rozwiązania się nadziałem, ale wystarczy odpowiednie filtrowanie rzeczy idących od usera i nagle 99% problemów znika. Nie. "Odpowiednie filtrowanie" to obejście problemu, który w ogóle nie powinien istnieć, a który _rozwiązuje_ (nie _obchodzi_) użycie współczesnego interfejsu do baz danych (chociażby PDO). Wiesz, że w jakimś dwubajtowym kodowaniu jeden z chińskich ideogramów zawiera ASCII 0x5c, czyli backslash? Zgadnij, jak to wpływa na "zabezpieczenia" oparte o addslashes/stripslashes/wytnij_slashes_real_escape_string. Zamiast się zastanawiać, czy na pewno Twoje "rozwiązanie" z filtrowaniem/escape'owaniem danych od klienta działa, możesz zlikwidować całą klasę problemów. Użycie jakiegoś frameworka (jakiegokolwiek używanego nie tylko przez autora i jego psa) chowa przed Tobą tego typu pomysły i generalnie wymusza zdrowsze podejście (oddzielenie logiki biznesowej od prezentacji itp.). Kiedyś jeszcze lepienie w gołym PHP miało sens, jak nie było powszechnych frameworków i darmowych SaaSów do wszystkiego, ale teraz naprawdę nie jestem w stanie znaleźć jakiegokolwiek uzasadnienia poza masochizmem. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Kamikadze Zgłoś post Napisano Wrzesień 18, 2013 Może i tak, ale mnie i tak nie przekonują FW przy programowaniu. Osobiście traktuję to jak przyjemne spędzanie czasu a nie pracę, więc może i dla tego. Może przez to że pisanie czegoś od zera daje lepszą satysfakcję niż gotowiec i dodanie tylko kilku pierdółek. A co do tych filtracji - jak się rozplanuje używanie głównie cyfr / liczb to połowa filtracji schodzi z głowy bo deklarujesz typ danych i tyle + ewentualnie dodatkowo filtracja jak ktoś jest nadgorliwy Udostępnij ten post Link to postu Udostępnij na innych stronach