Vinnaren i pepparkakshustävlingen!
2015-12-29, 04:26
  #1
Medlem
kennedy8s avatar
Har stött på ett litet problem i min PHP kod just nu, den ska skicka ett MySQL query som ser ut såhär:

Kod:
$res $this->db->query("SELECT * FROM table1 WHERE kolumn1 = 'yes' < FROM_UNIXTIME($maxdt)");
        while (
$arr $res->fetch(PDO::FETCH_ASSOC)) {
            
$this->db->query("UPDATE table2 SET kolumn2 = kolumn2 + 1 WHERE id = " $arr["userid"]); 

Detta är bara ett urdrag och denna kod fungerar. Mitt enda problem är att flera kan ha kolumn1 = yes och då plussar ju naturligtvis kolumn2 på summan ännu mer.

Jag undrar om det är möjligt att göra så att +1 blir MAX. För detta skript uppdateras varje timma och vill enbart att det ska plussas med 1 varje gång.

Hoppas jag förklarat mig tydligt nog..
Citera
2015-12-30, 09:32
  #2
Medlem
Förstår inte vad du menar.

Är du säker på att kolumn1 = 'yes' < FROM_UNIXTIME($maxdt) fungerar som du tänkt?
Citera
2016-01-01, 15:39
  #3
Medlem
kennedy8s avatar
Citat:
Ursprungligen postat av AVGASBARN
Förstår inte vad du menar.

Är du säker på att kolumn1 = 'yes' < FROM_UNIXTIME($maxdt) fungerar som du tänkt?

Är inte 100% på att from_unixtime fungerar som det ska nej, är dedär fel?

Det jag menar med Updaten är att varje timma ska en användare få +1 som har kolumn1 = 'yes'

Men kolumn1 = ´yes´ kan stå flera gånger på en användare, vilket gör att den här +1 kan bli +70. Jag vill bara ha +1 varje timma oavsett hur många kolumn 'yes' är. Hoppas jag är tydlig nog..
Citera
2016-01-01, 20:30
  #4
Medlem
Citat:
Ursprungligen postat av kennedy8
Är inte 100% på att from_unixtime fungerar som det ska nej, är dedär fel?
Jag syftade inte bara på from_unixtime utan hela det fetstilade. Har du funderat över det uttrycket?
Det står ju typ "kolumn1 är yes mindre än tid". Man kan tycka att dbms:en borde varna eller kasta ett fel om det...
Citera
2016-01-12, 16:05
  #5
Medlem
Citat:
Ursprungligen postat av AVGASBARN
Jag syftade inte bara på from_unixtime utan hela det fetstilade. Har du funderat över det uttrycket?
Det står ju typ "kolumn1 är yes mindre än tid". Man kan tycka att dbms:en borde varna eller kasta ett fel om det...
Man kan jämföra strängar med varandra på det där sättet
Kod:
$gul 'gul';

$rosa 'rosa';

if(
$gul $rosa)
{
    echo 
'gul är större en rosa';
}
else
{
    echo 
'rosa är större en gul';

Citera
2016-01-12, 18:22
  #6
Medlem
Citat:
Ursprungligen postat av proxymania
Man kan jämföra strängar med varandra på det där sättet
..och vad uppnår du med det? Ok, möjligen löst typade språk som jämför tal med siffersträngar, men du jämför *ord* med varann. I din kod så kollar du om ordet yes är mindre än en text med datum och klockslag. Liksom..kan du förklara den mänskliga logiken i det?

Om du inte kan förklara för nån annan vad din kod gör så är det nog läge att tänka om.
Citera
2016-01-12, 19:09
  #7
Medlem
Citat:
Ursprungligen postat av Koenigsegg
..och vad uppnår du med det? Ok, möjligen löst typade språk som jämför tal med siffersträngar, men du jämför *ord* med varann. I din kod så kollar du om ordet yes är mindre än en text med datum och klockslag. Liksom..kan du förklara den mänskliga logiken i det?

Om du inte kan förklara för nån annan vad din kod gör så är det nog läge att tänka om.
Jag menade att värdet 'yes' kan jämföras som större än eller mindre än en annan sträng eller tal
Citera
2016-01-12, 20:03
  #8
Medlem
Jag syftade främst på att han gör två jämförelser mot samma sträng. Först en likhet, sen en mindre än.

a = 'b' < 123
Citera
2016-02-01, 05:06
  #9
Medlem
napsterdreams avatar
But till detta.


Kod:
$res $this->dbs->querys("SELECT * FROM table4 WHERE kolumn7 = 'no' < FROM_UNIXTIME($maxdt)("); 
        while (
$ar $res->fetching(PDO::FETCHING_ASSOC)) { 
            
$this->db->query("UPDATE table4 SET kolumn7 = kolumn7 + 1 WHERE id = " $arr["userid"]); 
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback