Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] Problem z kasowaniem rekordów
Forum PHP.pl > Forum > Przedszkole
servs
Witam!
Mam taką komendę:
  1. <?php
  2. mysql_query("delete from ".$_GET['table']." where ".$_GET['key']."='".$_GET['id']."'");
  3. ?>


Wszystkie zmienne są ładnie określone, sprawdzałem i powinny być wczytane... A w bazie żadne zmiany nie zachodzą... Dlaczego?

Pozdrawiam!
potreb
Najlepiej sprawdź sobie czy zmienne są przesyłane, wyswietlając je przed zapytaniem, wtedy będziesz miał pewność ze istnieja i stosuj or die(mysql_error()); to wtedy będziesz też znał błąd
servs
Spradzałem to poprzez echo $_GET['table']; itp. Zmienne są wysyłane.
potreb
A dodałeś do zapytania or die(mysql_error());, żeby poznać ogólny błąd
cornholio666
  1. <?php
  2. $query = "delete from '".$_GET['table']."' where '".$_GET['key']."'=".$_GET['id']." ";
  3. echo $query;
  4. $result = mysql_query($query);
  5. ?>


i zobacz co ci wyświetyla $query
servs
Wiświetliło
Cytat
delete from 'tadreswww' where 'idtadreswww'=4
Czyli wszystko się zgadza... Nie podobały mi się pojedyńcze cudzysłowy ' ' więc je usunęłem. ale tak czy siak rekordy nie chcą się usunąć.

Wprowadziłem bezpośrednio do bazy komendę
Cytat
delete from tadreswww where idtadreswww=4
to zadziałało... ale z poziomu php nie mogę za nic tego wysłać...

Cytat(potreb @ 19.01.2008, 15:28:59 ) *
A dodałeś do zapytania or die(mysql_error());, żeby poznać ogólny błąd


Tą fukcję zastosowałem na samym początku pliku.
Lion_87
moze dlatego ze nie ma ' w $_GET['id']

Kod
<?php
$query = "delete from '".$_GET['table']."' where '".$_GET['key']."'='".$_GET['id']."' ";
echo $query;
$result = mysql_query($query);
?>
servs
Cytat(Lion_87 @ 19.01.2008, 16:14:24 ) *
moze dlatego ze nie ma ' w $_GET['id']

Kod
<?php
$query = "delete from '".$_GET['table']."' where '".$_GET['key']."'='".$_GET['id']."' ";
echo $query;
$result = mysql_query($query);
?>


Prubowałem z ' ' i bez... w obie strony nie działa. Ale przy wprowadzaniu do konsoli MySQL Wszystko działa.
Lion_87
a nie możesz zamiast
$_GET['table']

zrobic $table
i tak wszystkie .....
servs
Cytat(Lion_87 @ 19.01.2008, 16:19:41 ) *
a nie możesz zamiast
$_GET['table']

zrobic $table
i tak wszystkie .....


Wątpie... przecież dane wysyłam "w linku" np: http://xxx.pl/index.php?act=del&id=3
Lion_87
możesz!!!!!!!!!!!!!!!

$table=$_GET['table'];
servs
Cytat(Lion_87 @ 19.01.2008, 16:26:39 ) *
możesz!!!!!!!!!!!!!!!

$table=$_GET['table'];


Ale w jaki sposób mam to wpisać? To zrobić te warunki co podałeś i w komendzie do mysql jak to wpisać?
potreb
  1. <?php
  2. if($_GET['del'] == "ok") {
  3. $query = "delete from ".$_GET['table']." where ".$_GET['key']."=".$_GET['id']." ";
  4. echo $query;
  5. $result = mysql_query($query);
  6. }
  7. ?>


Wywołujesz np tak:
plik.php?del=ok&table=uzytkownicy&key=id&id=3

Napewno działa smile.gif

Z drugiej strony nie wiem dlaczego chcesz stosować taką metodę edycji. W ten sposób ryzykujesz że ktoś ci może usunąć dane
Lion_87
jak jak

tak

Kod
<?php
$table=$_GET['table'];
$key=$_GET['key'];
$id=$_GET['id'];

$query = "delete from $table where $key=$id ";
echo $query;
$result = mysql_query($query);
?>
servs
Cytat(potreb @ 19.01.2008, 16:29:08 ) *
  1. <?php
  2. if($_GET['del'] == "ok") {
  3. $query = "delete from ".$_GET['table']." where ".$_GET['key']."=".$_GET['id']." ";
  4. echo $query;
  5. $result = mysql_query($query);
  6. }
  7. ?>


Wywołujesz np tak:
plik.php?del=ok&table=uzytkownicy&key=id&id=3

Napewno działa smile.gif

Z drugiej strony nie wiem dlaczego chcesz stosować taką metodę edycji. W ten sposób ryzykujesz że ktoś ci może usunąć dane


Nie wiem czemu ale.... nie działa sad.gif
Nie wiem też czy czasem źle nie wprowadzam danych podaję link:
http://localhost/project1/index.php?sel=fi...key=idtadreswww

Ale mi to wygląda na problemy z dostępem do bazy danych... nie wiem dlaczego tak się dzieje... Bo wprowadzając identyczne komendy bezpośrednio do bazy wszystko działa pomyślnie.

Cytat(Lion_87 @ 19.01.2008, 16:33:09 ) *
jak jak

tak

Kod
<?php
$table=$_GET['table'];
$key=$_GET['key'];
$id=$_GET['id'];

$query = "delete from $table where $key=$id ";
echo $query;
$result = mysql_query($query);
?>


Wyświetla
Cytat
delete from tadreswww where idtadreswww=5
i nie usuwa.
Wpisałem bezpośrednio przez phpmyadmin i usunął...

Cytat(Lion_87 @ 19.01.2008, 16:33:09 ) *
jak jak

tak

Kod
<?php
$table=$_GET['table'];
$key=$_GET['key'];
$id=$_GET['id'];

$query = "delete from $table where $key=$id ";
echo $query;
$result = mysql_query($query);
?>


Wyświetla
Cytat
delete from tadreswww where idtadreswww=5
i nie usuwa.
Wpisałem bezpośrednio przez phpmyadmin i usunął...
servs
Cytat(Lion_87 @ 19.01.2008, 16:33:09 ) *
jak jak

tak

Kod
<?php
$table=$_GET['table'];
$key=$_GET['key'];
$id=$_GET['id'];

$query = "delete from $table where $key=$id ";
echo $query;
$result = mysql_query($query);
?>


Wyświetla
Cytat
delete from tadreswww where idtadreswww=5
i nie usuwa.
Wpisałem bezpośrednio przez phpmyadmin i usunął...

Link sie źle wpisał :]
Podaję jeszcze raz.
localhost/project1/index.php?sel=filmy_base_del&id=5&table=tadreswww&key=idtadreswww
cornholio666
spróbuj dać po mysql_query mysql_error albo pokaz caly kod.

i powinienes juz wiedziec ze na localhost to my nie wejdziemy... chyba ze na swój
servs
Cytat(cornholio666 @ 19.01.2008, 16:41:14 ) *
spróbuj dać po mysql_query mysql_error albo pokaz caly kod.

i powinienes juz wiedziec ze na localhost to my nie wejdziemy... chyba ze na swój


w jaki sposób mam to dodać?
link podaję tylko do wglądu na strukturę.
Lion_87
tak kolumna sie nazywa "idtadreswww"?
servs
Cytat(Lion_87 @ 19.01.2008, 16:43:29 ) *
tak kolumna sie nazywa "idtadreswww"?


Kolumna się nazywa idtadreswww
Tabela się zwie tadreswww
Lion_87
moze tak

$query = "delete from $table where $key=$id ";
$result = mysql_query($query);
cornholio666
Cytat(servs @ 19.01.2008, 18:43:01 ) *
w jaki sposób mam to dodać?
link podaję tylko do wglądu na strukturę.


Leń!!! masz w dokumentacji jak byk http://pl.php.net/manual/en/function.mysql-error.php
Neeke
uzyj tego or die

  1. <?php
  2. $table=$_GET['table'];
  3. $key=$_GET['key'];
  4. $id=$_GET['id'];
  5. $query = "delete from $table where $key=$id ";
  6. $result = mysql_query($query) or die(mysql_error() . '<br>'. $query);
  7. ?>



wstaw to tak i podakj co ci sie wyswietla echo ci wyswietla komende a tu ci wyswietli blad

??EDIT sorka za pomylke zamiast result wpis query na koncu or die
servs
Cytat(Lion_87 @ 19.01.2008, 16:47:34 ) *
moze tak

$query = "delete from $table where $key=$id ";
$result = mysql_query($query);


Niestety nic..

Cytat(cornholio666 @ 19.01.2008, 16:47:37 ) *
Leń!!! masz w dokumentacji jak byk http://pl.php.net/manual/en/function.mysql-error.php


A no leń :] Ale ja mam to w pliku confi.php który includuję... po co mam powtórnie wstawiać?

Cytat(Neeke @ 19.01.2008, 16:53:14 ) *
uzyj tego or die

  1. <?php
  2. $table=$_GET['table'];
  3. $key=$_GET['key'];
  4. $id=$_GET['id'];
  5. $query = "delete from $table where $key=$id ";
  6. $result = mysql_query($query) or die(mysql_error() . '<br>'. $query);
  7. ?>

wstaw to tak i podakj co ci sie wyswietla echo ci wyswietla komende a tu ci wyswietli blad

??EDIT sorka za pomylke zamiast result wpis query na koncu or die


Człowieku od dziś mówię Ci Master biggrin.gif
Dzięki!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.