[PHP][OOP]Ebbe a nagyon pici kódba mi lehet a hiba?
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
Te nem érted amit írok?
Most írjam le újra ugyanazt?
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 :)
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.
Utolsó!
Teljesen igazad van! Minden tiszteletem a normális kommentért ment a zöld!
Köszönöm :)
#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.
ha nem használom a var kulcsszot akkor nem akar működni :(
Php 7.1
#19 Mert helyette a következők közül választhatsz:
public
private
protected
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!