• 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

VPS Starter Arubacloud
0 głosów
570 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,550 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,550 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 (599,730 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 (599,730 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 (599,730 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 366 wizyt
pytanie zadane 9 lipca 2015 w PHP przez mowmiheniek Stary wyjadacz (11,900 p.)
0 głosów
1 odpowiedź 323 wizyt
0 głosów
2 odpowiedzi 797 wizyt

92,452 zapytań

141,262 odpowiedzi

319,077 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...