aika Posted August 19, 2015 Report Share Posted August 19, 2015 (edited) Pirmo reizi ņemos ar ko tādu, lūgums pēc palīdzības. Uzdevums ir uz laiku nomainīt usera pass, lai apskatītos kas šim tur nestrādā. Pirms tam ar rociņām kopējās parole un repleisojās atpakaļ! Gribās pa smuko, guglējam un taisam workbenčā procedūru: DELIMITER $$ DROP PROCEDURE IF EXISTS swappass; CREATE PROCEDURE swappass() BEGIN DECLARE passw varchar(128); DECLARE uid varchar(20); set uid = 64437; SELECT passw = Password FROM m_membership where userid = uid; update m_membership set Password = 'rxSBeIf95nEjrYsvuqI1111tORgrsQ+SDcGfTob6pIQ=' where userid = uid; /* prastā parole */ SELECT SLEEP(300); /* gaidam 5min */ update m_membership set Password = passw where userid = uid; END; $$ DELIMITER ; Rezultātā pieprasījums aiziet bezgalīgā Running.... un atpakaļ paroli nenomaina. Kas nav pareizi?! Edited August 20, 2015 by aika Quote Link to comment Share on other sites More sharing options...
Roze Posted August 19, 2015 Report Share Posted August 19, 2015 Viena lieta, kas krīt acī, ir Password, kas idejiski ir MySQL rezervēts vārds.. varbūt jālieto `Password` Otra - SELECT passw = Password FROM m_membership where userid = uid; sintakse varbūt, ka ir pareiza/ejoša, bet es personīgi esmu pieradis kaut kā lietot SELECT INTO -> SELECT `Password` INTO passw FROM m_membership where userid = uid; vai SET passw := ( SELECT `Password` FROM m_membership where userid = uid ); Quote Link to comment Share on other sites More sharing options...
aika Posted August 19, 2015 Author Report Share Posted August 19, 2015 aaamm, tāds muļķīgs jautājums - ar šo pietiek lai tā procedūra izpildītos? Quote Link to comment Share on other sites More sharing options...
Roze Posted August 20, 2015 Report Share Posted August 20, 2015 Nezinu, pamēģini. Bet pirms rakstīt procedūras var jau patestēt arī vienkārši ar pašiem SQL kverijiem vai tie izpildās. Piemēram, no mysql konsoles vai kāda cita rīka (no phpmyadmin visdrīzāk nestrādās, jo nepieciešama nepārtraukta sesija) ar visiem mainīgajiem (@ ir sesijas mainīgie): SET @uid = 64437; SELECT `Password` INTO @passw FROM m_membership WHERE userid = @uid; UPDATE m_membership SET `Password` = 'rxSBeIf95nEjrYsvuqI1111tORgrsQ+SDcGfTob6pIQ=' WHERE userid = @uid; UPDATE m_membership SET `Password` = @passw WHERE userid = @uid; .. un tad skatīties kur un kas izpildās vai nē. Quote Link to comment Share on other sites More sharing options...
aika Posted August 21, 2015 Author Report Share Posted August 21, 2015 Jā, izrādījās ka SQL tupa nepatika sintakse -> SELECT INTO atrisināja mainīgā jautājumu! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.