Kezdőoldal » Számítástechnika » Programozás » [PHP][OOP]Ebbe a nagyon pici...

[PHP][OOP]Ebbe a nagyon pici kódba mi lehet a hiba?

Figyelt kérdés

Sziasztok!

Nagyon kezdő vagyok még OOP téren, de egyszerűen nem találom a hibát :( !


connect.php :


<?php



class Lekerdezes{

var $sql="";

var $con ="";

function __construct(){

$this->con=new mysqli('localhost', 'root', '','gyakorlas');

$sql=mysqli_query($this->con,"SELECT id FROM teszt");

$con = new mysqli('localhost', 'root', '','gyakorlas');

}


function lekerdezes (){

while($row=mysqli_fetch_all($this->sql)){

foreach ($row as $key) {

echo $key[0];

}

}

}



}


?>


-----------------------------


index.php:


<?php


include("connect.php");


$lekerdezes=new Lekerdezes();

$lekerdezes->lekerdezes();

?>



------------------


Hiba:Warning: mysqli_fetch_all() expects parameter 1 to be mysqli_result, string given in C:\xampp\htdocs\gyakorlas\connect.php on line 15


2018. febr. 28. 19:16
1 2 3
 11/21 A kérdező kommentje:
És mivel elmondtam hogy ez egy kódrészlet azért gyakorlás mert lépésről lépésre építem fel. És igen kellesz az újrafelhasználás. Valószínűleg nem érted a magyar nyelvet :)
2018. febr. 28. 20:27
 12/21 anonim ***** válasza:

Te nem érted amit írok?

Most írjam le újra ugyanazt?

2018. febr. 28. 20:36
Hasznos számodra ez a válasz?
 13/21 A kérdező kommentje:

Na szóval:


Ez egy program részlet! Nincs befejezve! Gyakorolok azért haladok lépésről-lépésre, ahogy írtad, de hibába ütközök amit nem értek, hogy miért van!


Erre keresek megoldást :)

2018. febr. 28. 20:43
 14/21 anonim ***** válasza:
100%

Itt az ékes példája, hogy a legfontosabb dolog amit nem tanulnak meg az emberek nem az OOP, vagy az adatbáziskezelés, hanem a hibajavítás. A hibaüzenet leírja, hogy a mysqli_fetch_all egy mysqli_result objektumot vár paraméterül, de stringet kap. Miért kap stringet? Mi van a paraméterül adott adattagban? Irassuk ki, nézzük meg mi van benne. Hm, egy üres string. Dehát a konstruktorban lefuttattunk egy mysqli_queryt, miért üres string van benne? Nézzük cska meg... Oh, hát persze, mert nem $this->sql szerepelt benne, hanem $sql, azaz egy lokális változónak adtam át a query eredményét. És hiba javítva.


Halkan jegyzem meg amúgy, hogy a mysqli_query csak akkor fog egy mysqli_result objektumot visszaadni, ha sikeres volt a lekérdezés, vagyis a kódod nincs felkészítve arra, hogy hibás lesz a lekérdezés.

2018. febr. 28. 21:04
Hasznos számodra ez a válasz?
 15/21 A kérdező kommentje:

Utolsó!


Teljesen igazad van! Minden tiszteletem a normális kommentért ment a zöld!


Köszönöm :)

2018. febr. 28. 21:14
 16/21 anonim ***** válasza:

#3-as vagyok. Bocs, ezt a sort akartam mutatni:


$sql=mysqli_query($this->con,"SELECT id FROM teszt");


Innen hiányzik a $this->.

De közben #14-es leírta, amire gondoltam.

2018. febr. 28. 21:45
Hasznos számodra ez a válasz?
 17/21 anonim ***** válasza:
Én annyit elárulnék még, ha nem akarsz rossz dolgokat megtanulni gyakorlás közben, hogy a var kulcsszó már a php5-ös verzió óta "deprecated", használata nem javasolt.
2018. febr. 28. 22:36
Hasznos számodra ez a válasz?
 18/21 anonim ***** válasza:
Szerintem sokkal jobb konkrét példán gyakorolni, gyakorlás adatbázison végrehajtott teszt lekérdezés helyett. Egyből kiderül, hogy mit és hogyan érdemes újrafelhasználni.
2018. márc. 1. 06:55
Hasznos számodra ez a válasz?
 19/21 A kérdező kommentje:

ha nem használom a var kulcsszot akkor nem akar működni :(

Php 7.1

2018. márc. 1. 08:35
 20/21 anonim ***** válasza:

#19 Mert helyette a következők közül választhatsz:


public

private

protected

2018. márc. 1. 09:01
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!