Autor | Zpráva | ||
---|---|---|---|
HOl Profil * |
#1 · Zasláno: 30. 5. 2014, 01:01:51
Ahoj, mám 2 tabulky. Uživatelů a uzivatele_aktivace (podle toho zda aktivovali mailem). Je to celé navržené blbě, nicméně s tím nic dělat nemohu. Potřebuji poradit s SQL dotazem. Potřebuji smazat řádek z uzivatele_aktivace a WHERE má být, že to platí, pokud se EMAIL z této tabulky rovná MAILU v tabulce uživatelů a UID v tabulce uživatelů se rovná zadanámu (v GET)
Snad jsem to vyjádřil dost jasně. V podstatě uzivatele_aktivace.email = uzivatele.email a uzivatele.uid = $_GET['uid'] Mám toto, ale nemaže to. Ve strukturně psaném kódu bych si nechal vypsat chybu, popřípadě bych použil více dotazů, nicméně v OOP jsem začátečník. $sql = $this->db->prepare("DELETE FROM `uzivatele_aktivace` WHERE `email` = `uzivatele.email` AND `uzivatele.uid` = :uid LIMIT 1"); |
||
Alphard Profil |
#2 · Zasláno: 30. 5. 2014, 01:19:24
Takto jednoduše nejde napojit další tabulky, byl by třeba klasický postup jako u selectu, třeba join. Příklady různých možností jsou na stackoverflow.com/questions/652770/delete-with-join-in-mysql.
Myslím, že to ani není třeba komentovat, vám by tady mohl stačit jednoduchý poddotaz delete from uzivatele_aktivace where email = (select email from uzivatele where ...) |
||
HOl Profil * |
#3 · Zasláno: 31. 5. 2014, 02:02:21
Děkuji. Nicméně zkusil jsem to podle odkazu a nic to nesmaže. Pokud to vložím do SQL v PHPMyAdminu, tak to funguje, jenže v kódu ne. Zde je celá třída.
public function smazatuzivatele($uid){ $sql = $this->db->prepare("DELETE FROM uzivatele_aktivace WHERE email IN ( SELECT email FROM uzivatele WHERE uid = :uid )"); $sql = $this->db->prepare("DELETE FROM uzivatele WHERE uid = :uid LIMIT 1"); $sql->execute(array(':uid'=>$uid)); return true; } Jak jsem říkal, v OOP jsem začátečník, není například špatně zapsaná ta :uid? |
||
Časová prodleva: 3 dny
|
|||
HOl Profil * |
#4 · Zasláno: 2. 6. 2014, 15:22:50
Nějak jsem to vyzkoušel, ale dostávám chyby
Warning: mysql_query(): Too many open links (0) Warning: mysql_query(): A link to the server could not be established in Jedná se ale o naprosto standardní kód <? include "../db_config.php"; $result = mysql_query("SELECT email FROM uzivatele WHERE id = ".(int)$_GET["idObject"]." LIMIT 1;") or die(mysql_error()); list($email) = mysql_fetch_row($result); $sql = mysql_query("DELETE FROM uzivatele_aktivace WHERE email = '$email'") or die(mysql_error()); ?> |
||
Kajman Profil |
#5 · Zasláno: 2. 6. 2014, 16:08:03
Zkuste pro připojení používat include_once místo include, ať se nepřipojujete zbytečně vícekrát.
|
||
HOl Profil * |
#6 · Zasláno: 2. 6. 2014, 19:53:15
Dobře. Nicméně to problém nevyřešilo :/
|
||
Kajman Profil |
#7 · Zasláno: 3. 6. 2014, 07:57:08
Podle hlášek to vypadá, že daný server dosahuje limitu pro počet připojení do databáze. Problém není v uvedeném kódu, zkuste kontaktovat podporu hostingu.
|
||
HOl Profil * |
#8 · Zasláno: 3. 6. 2014, 22:38:42
Super, díky, navýšili limit.
|
||
Časová prodleva: 10 let
|
0