Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP] Błąd? Bug? Literówka?
Forum PHP.pl > Forum > Przedszkole
sadistic_son
Dziwna sprawa. Kod:
  1. lacz_z_baza();
  2. $query="DELETE FROM tabela WHERE id=$id";
  3. mysql_query($query);
Nie działa. Nie dzieje się nic, nie wywala błędu itp.

Natomiast jeśli tylko w tym samym kodzie podmienię formułke sql na:
  1. lacz_z_baza();
  2. $query="UPDATE tabela SET imie='zenek' , nazwisko='burek' WHERE id=$id";
  3. mysql_query($query);
Wszystko wykonuje się bezbłędnie.

Z kolei w innym skrypcie działają mi zapytania typu SELECT natomiast nie mogę w ogóle zUPDATEować tabeli. Kopiuję sobie do jednego skryptu zapytania z drugiego skryptu (ktory dziala bezblednie) i d*pa!! Robię gdzieś błąd? Czy to jakiś bug? Wirus? Ufoludki?
julek12
A daj tak:
DELETE FROM `nazwa bazy danych`.`tabele` WHERE `tabela`.`id`= $id";
sadistic_son
Dodam, że wszystkie potrzebne dane do zapytania bezbłędnie są odczytywane z $_POST, skrypt łączy się z bazą, wszystko śmiga jak trzeba. Wygląda to tak jakby funkcja mysql_query() po prostu nie działała. Bo jak podmienię nawę tabeli na taką która nie istnieje to też żadnego błędu nie wywala.
cojack
Strzelam, użytkownik nie ma uprawnień.

@sadistic_son wziął byś temat odświeżył niczym napiszesz posta ;p
sadistic_son
Cytat(julek12 @ 20.08.2009, 11:57:47 ) *
A daj tak:
DELETE FROM `nazwa bazy danych`.`tabele` WHERE `tabela`.`id`= $id";

Nadal nic, bez zmian.
seth-kk
user nie ma uprawnien do usowania?
sadistic_son
Cytat(cojack @ 20.08.2009, 11:59:09 ) *
Strzelam, użytkownik nie ma uprawnień.


Ma prawa takie jak root. Wszystkie inne zapytania działają ok w innych plikach z tą samą funkcją łączącą z bazą zdefiniowaną jeden raz w pliku głównym.
seth-kk
zakladam ze pod "wszystkie inne" kryje sie tez usowanie
wyrzoc sobie zapytanie tuz przed/po wykonaniu moze nie do konca wyglada tak jak oczekujesz
cojack
Spróbuj z konsoli jak z konsoli nie poleci, to albo masz jakieś dziwne constrainy pozakładane (fkey, ondelete, onupdate, terefere itp) albo nie masz uprawnień.
sadistic_son
Cytat(cojack @ 20.08.2009, 12:13:38 ) *
Spróbuj z konsoli jak
Zakładam, że chodzi o konsolke SQL.
Sprawdziłem, tam działa sciana.gif

Cytat(cojack @ 20.08.2009, 12:13:38 ) *
albo nie masz uprawnień.
Działam na root.

Może mam gdzieś błąd ktorego nie widzę.
To kod formularza do edycji danych użytkowników. Wklejam czysty kod prosto ze skryptu bez pozamienianych nazw itp. Dokładnie tak to u mnie wygląda:
  1. <form class="edit users" action="index.php?page=admin_panel" method="post" name="edit_user">
  2. <form action="index.php?page=admin_panel" name="edit_user">
  3. Nazwa:<input class="field" type="text" name="edit_name" value="'.$name.'" /><br />
  4. Hasło:<input class="field" type="text" name="edit_pass" value="'.$password.'" /><br />
  5. E-mail:<input class="field" type="text" name="edit_email" value="'.$email.'" /><br />
  6. Aktywny:<input type="checkbox" name="edit_active" '.$active.' /><br />
  7. Admin:<input type="checkbox" name="edit_admin" '.$admin.' /><br />
  8. <input type="hidden" name="edit_id" value="'.$id.'" />
  9. <input type="submit" name="submit_edit_user" value="Zatwierdź" />
  10. </form>

I następnie skrypt który po kliknięciu w przycisk 'Zatwierdź' ma wykonać UPDATE bazy:
  1. if(isset($_POST['submit_edit_user'])){
  2. $edit_name=$_POST['edit_name'];
  3. $edit_pass=$_POST['edit_pass'];
  4. $edit_email=$_POST['edit_email'];
  5. $edit_active=$_POST['edit_active'];
  6. $edit_admin=$_POST['edit_admin'];
  7. $edit_id=$_POST['edit_id'];
  8.  
  9. db_connect(); //funkcja zdefiniowana w innym pliku - działa bezbłędnie
  10. $query="UPDATE t_users SET name='$edit_name' , password='$edit_pass' , email='$edit_email' , active='$edit_active' , admin='$edit_admin' WHERE id_user='$edit_id' ";
  11.  
  12. mysql_query($query);
  13.  
  14. }
I to nie działa. Może zobaczycie coś czego ja nie widzę.
motylo
Podwójny FORM?
sadistic_son
Podwójny form... hmmm..... usunąłem, ale to nie to powodowało błąd. Tak czy siak dzięki.

Czytając to co tu na forum napisałem nalazłem błąd.
Zamiast
  1. $query="UPDATE t_users SET name='$edit_name' , password='$edit_pass' , email='$edit_email' , active='$edit_active' , admin='$edit_admin' WHERE id_user='$edit_id' ";
Powinno być
  1. $query='UPDATE t_users SET name="'.$edit_name.'" , password="'.$edit_pass.'" , email="'.$edit_email.'" , active="'.$edit_active.'" , admin="'.$edit_admin.'" WHERE id_user="'.$edit_id.'"';

Nie wiedziałem ze jeśli zapytanie obejmiemy w cudzysłowie " zamiast w apostrofy ' to nie będzie ono działać poprawnie ze zmiennymi.

Honorowo 'Pomógł' każdemu kto się zainteresował tematem:)
julek12
A gdzie jest ten DELETE?

jeśli chodzi o UPDATE to spróbuj tak:
$query='UPDATE t_users SET name='.$edit_name.' , password='.$edit_pass.' , email='.$edit_email.' , active='.$edit_active.' , admin='.$edit_admin.' WHERE id_user='.$edit_id;

Sorry post dałem wcześniej ale usunąłem przypadkowo ;|
sadistic_son
Cytat(julek12 @ 20.08.2009, 12:36:38 ) *
jeśli chodzi o UPDATE to spróbuj tak:
$query='UPDATE t_users SET name='.$edit_name.' , password='.$edit_pass.' , email='.$edit_email.' , active='.$edit_active.' , admin='.$edit_admin.' WHERE id_user='.$edit_id;
No więc właśnie te " powodowały błąd, powinno być tak jak mówisz czyli ' zamiast cudzysłowi. Dzięki.

julek12 masz drugiego 'Pomógł' za znalezienie błędu równo ze mnąwinksmiley.jpg
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.