Kezdőoldal » Számítástechnika » Programozás » Szintaktikailag hibás ez a...

Szintaktikailag hibás ez a sor? (php, mysql)

Figyelt kérdés

$sql = "UPDATE hirek SET hir_text='$text' WHERE hir_id='$id'";



Az id változót egyébként definiálom előtte úgy, hogy:

$_GET["id"];

Echo-zni is tudja a változót, get-ben megkapja az értéket, de mindig Undefined index-et ír ki a program. Az a legfurább, hogy ellenőrzöm, hogy megtörtént-e a módosítás így:


if ($conn->query($sql) === TRUE) {

echo "Record updated successfully";

} else {

echo "Error updating record: " . $conn->error;

}


Mindig azt írja, hogy record updated successfully. Az id-t az adatbázisból kérem le, ha az adatbázisból get-be megkapott id-t kézzel írom be, akkor működik a dolog, tehát az adatbázis sor létezik ilyen id-vel. Mi a fene lehet ez? Rossz ez szintaktikailag?



#php #MySQL #mysql update
2016. okt. 23. 20:44
1 2 3
 11/24 anonim ***** válasza:

var_dump($_GET);exit;


Es nezegesd, hogy mikor vesz fel erteket, sima tombkent kezelendo.


A link

Url.php?id=12


Vagy url.php?valami=asd&id=12&valami2=xyz


Mintaju kell legyen.

2016. okt. 23. 21:39
Hasznos számodra ez a válasz?
 12/24 A kérdező kommentje:

var_dump($_GET);exit;

ez azt íjra, hogy:


array(1) { ["id"]=> string(2) "44" }


Miért string? Lehet, hogy ez a gond, hogy string-ként értelmezi? Ennyi erővel a title-lel is megcsinálhatnám ugyanezt, azt lehet, hogy ki tudná keresni.

2016. okt. 23. 21:54
 13/24 anonim ***** válasza:
Ami a $_GET-ben vagy $_POST-ban van, az mind string.
2016. okt. 23. 21:56
Hasznos számodra ez a válasz?
 14/24 A kérdező kommentje:
De, ha megkapja az $_GET["id"]-t, akkor mit szrakodik? Nem értem. Ez már röhejes.
2016. okt. 23. 21:58
 15/24 A kérdező kommentje:
Egy Session változóba bevezettem a GET-et, és működik... Elég fura egy megoldás, de ez van...
2016. okt. 23. 22:49
 16/24 Djjjozsiiiii ***** válasza:

sessionbe bevezetted a változót, de mi van ha egyszerre két rekordot szeretnél módosítani vagy megtekinteni?


Ne félmegoldásokba gondolkozz. Azért jössz ide hogy elakadás után tovább lépj, ne pedig félrevezesd saját magad.


$sql -be te betettél valamit, első lépésként írasd ki mit hoztál össze:


echo $sql;


és akkor meglátod ténylegesen betudtad-e tenni az id értékét a linkből.

2016. okt. 24. 08:05
Hasznos számodra ez a válasz?
 17/24 Djjjozsiiiii ***** válasza:

[OFFTOPIK]:

Ez inkább a többieknek szól:

egy kezdőnek aki nem tudja eldönteni mi a $id és $_GET["id"] között a különbség, minek ajánlgattok prepared statementet és vagy osztályos megoldásokat?

Összezavarásképp, vagy a saját tudás villantás miatt?


Talán a hibakezelés alapvető lépését mondjátok neki...

Vagy pl mutasd a formodat hogy néz ki, hogy adja át a $_GET -be a változót, stb...


Ezzel később ráér foglalkozni ha az alapokkal tisztába került, és utána vagy feladja vagy továbblép.

2016. okt. 24. 08:11
Hasznos számodra ez a válasz?
 18/24 Djjjozsiiiii ***** válasza:

viperM:


és te $_GET -ben módosítasz HTML formot? profi....

2016. okt. 24. 08:13
Hasznos számodra ez a válasz?
 19/24 anonim ***** válasza:
Kedves kérdező! Tedd fel a kódodat egy pastebin-re hogy meg tudjuk nézni és akkor kiszúrjuk a hibát. Amit leírsz az alapján működnie kellene (eltekintve az SQL injection sebezhetőségtől), de biztosan van benne valami, amit te nem vettél észre, de mi esetleg észrevennénk!
2016. okt. 24. 09:16
Hasznos számodra ez a válasz?
 20/24 A kérdező kommentje:

"Ez inkább a többieknek szól:"


De tudom mi a különbség $_GET["id"] és $id között. Az egyik get-ből kapja meg az id utáni részt az url-ben, a másik meg egy változó, aminek akár azt az értéket is megadhatod, hogy "sanyi". Sose volt szó arról, hogy nem tudom mi a különbség.


"Echo-zni is tudja a változót, get-ben megkapja az értéket, de mindig Undefined index-et ír ki a program."


De ezt még vagy háromszor leírtam. Tényleg nem vagyok professzionális programozó, de már pl. törlést ugyanezzel az eljárással hajtottam végre, és tökéletesen működött. Onnan vettem magát az eljárást, konkrétan bemásoltam a saját kódomat, ami előtte ment, és az update-tel nem működik, csak ha szuperglobális változóként vezetem be a $_GET[""] tömbből kapott paramétert. Ez a problémám. Van egy ilyenem, hogy:


if (isset($_POST["update"])) {

$id = $_GET["id"];

$text = $_POST["text"];

$conn = new mysqli($servername, $username, $password, $dbname);

$sql = "UPDATE hirek SET hir_text='$text' WHERE hir_id='$id'";

}


Teljesen mindegy, hogy if-en belül, vagy globálisként definiálom az $id változót, nem kapja meg GET-ből az értéket már az if isset után. De kénytelen vagyok ebben az esetben ellenőrizni, hogy létezik-e az update érték. Ha egy megadott indexet írok az $id változóba, akkor megy, ha get-ből kapom az értéket, akkor nem. Magát a GET-ben tárolt id-t is már adatbázisból kapom.

2016. okt. 24. 09:20
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!