• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Poprawa pętli i zapytania MySQLi

Object Storage Arubacloud
0 głosów
588 wizyt
pytanie zadane 10 lipca 2015 w SQL, bazy danych przez niezalogowany

Ktoś podpowie co jest tutaj źle bo pętla się nie wykonuje?

		include("polacz.php"); // laczenie z baza
		$mysqli = ("select * from news order by id desc limit 5"); 
while($rekord = mysqli_fetch_array($mysqli)){
echo "1";
}

 

Połączenie z bazą jest ok, bo nie dostaje żadnych błędów:

<?php
$mysqli = new mysqli("localhost", "user", "pass", "db");
$mysqli->query("SET NAMES utf8");


if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}
?>

 

3 odpowiedzi

0 głosów
odpowiedź 10 lipca 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)
wybrane 10 lipca 2015
 
Najlepsza

Co to jest?

$mysqli = ("select * from news order by id desc limit 5");

Bo raczej nie pobranie danych z bazy ;)

Zapomniałeś o wysłaniu tego zapytania do bazy, tutaj przypisujesz tylko kod zapytania do zmiennej i próbujesz coś z nim zrobić.

I jak już zacząłeś obiektowo to raczej warto trzymać się jednego czyli to pobranie danych którego nie masz zrobić obiektowo i tą linijkę:

while($rekord = mysqli_fetch_array($mysqli)){

Też warto by zapisać obiektowo.

komentarz 10 lipca 2015 przez niezalogowany

Dzięki, poprawiłem na 

<?php 
include("polacz.php"); // laczenie z baza
$mysqli->query("SELECT * FROM news ORDER BY id DESC LIMIT 5"); 
while($rekord = mysqli_fetch_array($mysqli))
{
	echo $rekord[1];
}
?>

Bez skutku, nadal wyświetla się pusta strona. Co do linjiki

while($rekord = mysqli_fetch_array($mysqli)){

To nie bardzo wiem jak ją inaczej podmienić.

komentarz 10 lipca 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)

No bo fetch oczekuje zasobu z bazy a od Ciebie dostaje uchwyt do połączenia i dlatego dalej nic się nie dzieje. Powinno być tak:

<?php 
include("polacz.php"); // laczenie z baza
$result=$mysqli->query("SELECT * FROM news ORDER BY id DESC LIMIT 5"); 
while($rekord = mysqli_fetch_array($result))
{
    echo $rekord[1];
}
?>

A co do podmiany fetch na obiektowy: http://php.net/manual/en/mysqli-result.fetch-array.php W pierwszym przykładzie dokładnie pokazany jest podejście obiektowe a ty musisz tylko wsadzić to w pętle while ;)

+1 głos
odpowiedź 10 lipca 2015 przez Comandeer Guru (601,590 p.)
Fetchowanie nie rzuca żadnych błędów? Przy takim kodzie powinno, bo otrzymuje stringa zamiast resource
komentarz 10 lipca 2015 przez niezalogowany
Żadnych, pusta strona :O
komentarz 10 lipca 2015 przez Comandeer Guru (601,590 p.)
Poczytaj może jak włączyć wyświetlanie błędów: http://forum.php.pl/Jak_poprawnie_zadac_pytanie_t146215.html
komentarz 10 lipca 2015 przez Boshi VIP (100,240 p.)
Dlatego, że masz wyłączone notice...

http://forum.php.pl/index.php?showtopic=146215
komentarz 10 lipca 2015 przez Comandeer Guru (601,590 p.)
AFAIR w tym wypadku rzucony byłby warning
0 głosów
odpowiedź 10 lipca 2015 przez Anonim Mądrala (6,000 p.)
SELECT, FROM, ORDER BY, DESC, LIMIT(te polecenia chyba powinny być pisane dużymi literami)
komentarz 10 lipca 2015 przez niezalogowany
To bez znaczenia, nic to nie dało :/
komentarz 10 lipca 2015 przez Anonim Mądrala (6,000 p.)
while($rekord==mysqli_fetch_array(mysqli))
{
echo "1";
}
Może tak?

 

 

komentarz 10 lipca 2015 przez Boshi VIP (100,240 p.)
A czym jest wg ciebie zmienna rekord, że stawiasz warunek który się nigdy nie spełni?

Podobne pytania

0 głosów
3 odpowiedzi 380 wizyt
pytanie zadane 9 lipca 2015 w PHP przez mowmiheniek Stary wyjadacz (11,900 p.)
0 głosów
1 odpowiedź 337 wizyt
0 głosów
2 odpowiedzi 845 wizyt

92,579 zapytań

141,432 odpowiedzi

319,662 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...