Szintaktikailag hibás ez a sor? (php, mysql)
$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?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
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.
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.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
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.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
[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.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
viperM:
és te $_GET -ben módosítasz HTML formot? profi....
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
"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.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!