Törlés nem fut le!
Hali! Az a problémám hogy a következő törlés nem fut le pedig minden adatot megkap.
■ <?php
if (isset($_GET['id']))
{
include ("dbconnect2.php");
mysql_set_charset("latin2");
$id=$_GET['id'];
$tabla=$_GET['tabla'];
$p="DELETE FROM `$tabla` WHERE `id` = '$id'";
print $p;
mysql_query($p);
//mysql_close($kapcs);
}
header("location:../eredmenyeink.php");
?>
Én először teljesen
A header location-t eleve kommenteld ki és akkor legalább van esélyed látni, mi a probléma.
Aztán egy
Ha nincs meg minden adat, vagy nem azok amiknek lenniük kéne, így meg fogod tudni.
A mysql_query után írasd ki a
Ha nincs hiba, akkor lehet, hogy olyan "motort" használsz a tábládhoz, ami tranzakcióképes és nem csinál autocommit-ot. Ezesetben segíthet egy "commit" SQL utasítás.
(lenne némi kritikai megjegyzésem az ellenőrizetlen inputod felhasználását illetően, de az nem tűr nyomdafestéket, úgyhogy megtartom magamnak. ;) )
Próbáltam
Ilyet NE!
id
nevű mező. Tegyük fel hogy a felhasználó az alábbiid
paramétert adja át az URL-ben:0' OR id <> 0
Ekkor ugye az összes, az adott táblában levő sort kiüríti. Ezért a felhasználótól jövő adatot mindenképpen megfelelően escapelni kell, ebben az esetben mysql_real_escape_string segítségével. Igaz ez mind a$tabla
, mind az$id
változókra.Másik dolog, amit nem szabad csinálni, az az, hogy
GET
formában vársz adatokat, amik megváltoztatják az adatbázis. Olyan esetekben, aminek következményekéntINSERT
/UPDATE
/DELETE
adatbázis művelet fut le, mindenképpenPOST
(illetve amennyiben lehetséges, akkorPUT
) kéréssel legyenek megoldva.Honnan tudod, hogy minden adatot megkap? Kiírattad a megkapott adatokat? Mondjuk a
$_GET
és$_POST
tömbök kiíratásával ellenőrizheted ezt.Azt megcsinálom csak előbb ez
Hibák
mysql_query
adott vissza hibát (mysql_error())? A lekérdezésben levő tábla létezik? A lekérdezés sikeresen lefut-e akkor, ha egy MySQL adminisztrációs felületen futtatod?A kapcsolódás sikerül mert
Eddig asszem, hárman
Egyébként az "ugyan ez" és az "ugyanez" mást jelent!
Hogy máshol működik az include-olt program, még nem feltétlenül jelenti, hogy ebben a környezetben is, erre ne alapozz, ha hibát keresel!
A mysql_error a
Bocsi én voltam a balf*sz
Valóban ne így csináld,