Weboldalunk cookie-kat használhat, hogy megjegyezze a belépési adatokat, egyedi beállításokat, továbbá statisztikai célokra és hogy a személyes érdeklődéshez igazítsa hirdetéseit. További információ
Kezdőoldal » Számítástechnika » Programozás » Ez mi akar lenni?

Ez mi akar lenni?

Figyelt kérdés

PHP Notice: Trying to access array offset on value of type bool in


sziasztok ezt kapom, és nem php fájlban lévő hiba!!!! 1000000%

hanem a rendszernek van valami baja, freebsd 12, php74



#php #szerver #web #php74 #webprogrmaozas
febr. 15. 22:30
 1/8 anonim ***** válasza:
81%

Ezért is szép a PHP-nek a dinamikus típuskezelése :) Vegyünk egy egyszerű példát:

$result = $db->query(...);

print $result[0];


Mit gondolsz, mi a $result-ban tárolt adat? A lekérdezésed eredménye, ami egy legalább egy elemű halmaz? Haha... amit te nem tudsz az az, hogy a $db->query(...) egy false értéket ad vissza akkor, ha a lekérdezés nem sikerül. És egy bool érték nem minősül tömbnek, tehát nem értelmezhető rajta az indexelés, ami ezt a hibát okozza ^^


A te eseted is valami nagyon hasonló lehet.

febr. 15. 22:47
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:

[ssl:warn] [pid 29264] AH01882: Init: this version of mod_ssl was compiled against a newer library (OpenSSL 1.1.1h-freebsd 22 Sep 2020, version currently loaded is OpenSSL 1.1.1d-freebsd 10 Sep 2019) - may result in undefined or erroneous behavior

Ilyent is kapok, illetve csatolom a kodot

febr. 15. 23:11
 3/8 A kérdező kommentje:

function get_guild_empire($id)

{

global $database;


$stmt = $database->runQueryPlayer("SELECT empire FROM player.player_index WHERE pid1=:id OR pid2=:id OR pid3=:id OR pid4=:id");

$stmt->bindParam(':id', $id, PDO::PARAM_INT);

$stmt->execute();

$result=$stmt->fetch(PDO::FETCH_ASSOC);


return $result['empire'];

}



ebbe pl mi a hiba?

febr. 15. 23:12
 4/8 anonim ***** válasza:
100%

A

return $result['empire'];

utasítás elé tégy egy

var_dump($result);

utasítást, és látni fogod, mi a hiba.

febr. 15. 23:20
Hasznos számodra ez a válasz?
 5/8 A kérdező kommentje:

Haszontalan adatokat kaptam vissza

pl:

bool(false), meg ilyenek, de mondom eddig ezzel nem volt gond! Lehet a php-ból hiányzik valami nem? valami funkció, vagy nem tudom

febr. 15. 23:34
 6/8 anonim ***** válasza:
100%

Azért hiszed, hogy eddig nem volt vele gond, mert a PHP úgy volt beállítva, hogy az E_NOTICE szintű interpreter üzeneteket ne írja ki. Ettől függetlenül ez a kód már azokban az időkben is rossz volt.


Az informatikában az a jó, hogy tényekre épül. Itt most az a tény, hogy van a kódodban egy bug, amit most vettél észre. Tessék szépen elfogadni ezt a tényt és kijavítani!

febr. 15. 23:42
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:
100%

"Haszontalan adatokat kaptam vissza"

Dehogy haszontalanok azok! Csak te nem tudsz velük mit kezdeni. Ha a result értékére azt kaptad vissza, hogy bool(false), az azt jelenti, hogy hibás volt az adatbázisművelet. Ezen a nyomon már elindulhatsz.


"de mondom eddig ezzel nem volt gond"

Tehát ugyanaz a fájl, ugyanazok az adatok, hajszálpontosan ugyanaz az adatbázis volt eddig is jelen, és eddig működött, most meg nem? Bocsi, de ez így nem reális. Valami meg kellett, hogy változzon.


"Lehet a php-ból hiányzik valami nem? valami funkció, vagy nem tudom"

És csak úgy egyik napról a másilra eltűnt? Nem életszerű.

Persze, lehetséges, hogy frissült a PHP, és valami, ami eddig működött, az most nem, vagy némileg másképp működik. Bár ennek is csekély a valószínűsége, kivéve, ha eleve elavult technikákkal dolgoztál. Mondjuk láttam már erre példát. Főnök "webfejlesztő" ismerőse elkészítette a weboldalunkat (mert neki kellett adni a munkát, én hiába csináltam volna meg azt munkaidőmben, kellett a gyereknek a pénz), "természetesen" rég olyan függvényeket és technikákat használt, amiért a PHP már rég sipítozott, hogy elavult, ne használd. De csak használta. Kikapcsolta a warningokat, probléma megoldva. Aztán amikor tárhelyszolgáltatót váltottunk, ment a pislogás, hogy ez miért nem megy? Ja, mert a következő verzióban már kiszedték azt, ami addig csak elavultnak volt jelezve?

Na mindegy, nem akarom túlragozni. Egy verziófrissítés okozhat furcsaságokat, ha elavult és ellenjavallt módszereket alkalmazol, de én úgy sejtem, hogy itt az adatbázisod körül kell keresni a hibát.

febr. 16. 08:19
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:

igy nem lehet bindelni pdoban

mindnek egyedinek kell lennie

tehát

$stmt->bindParam(':id1', $id, PDO::PARAM_INT); stb

ezt az sqlbe is így tedd be


másrészt a végén a return elé tegyél egy if emptyt

tehát

if(empty($result)) return false;

ilyenkor ha az eredmény tömb üres, vagy a query hibával jön vissza, akkor a függvény is hibát ad vissza

febr. 16. 10:07
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2021, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | WebMinute Kft. | Facebook | Kapcsolat: info@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!