Permalänk
Medlem

PHP MYSQL IF EXISTS

Tjenare,
Nu är det så att jag har ett php script som lägger in minna doneringar i en database.
Men mitt problem är att om vi säger att jag donerar 100 kr med namnet Tommy, Sen ska jag donera igen så står det att jag har donerat två gånger.
Jag vill att den ska uppdatera summan istället för att göra en ny Men har fastnat på min kod.
Lite hjälp skulle inte sitta fel

$query = mysql_query("SELECT * FROM sms WHERE sms='$sms'"); if(mysql_num_rows($query) != 0) { mysql_query("UPDATE INTO sms (tariff) VALUES('" . $tariff . "') ") or die(mysql_error()); } else { mysql_query("INSERT INTO sms (nr, sms, tariff, operator) VALUES('" . $nr . "', '" . $sms . "', '" . $tariff . "', '" . $operator . "') ") or die(mysql_error()); }

Permalänk
Medlem

Detta borde fungera någotsånär:

mysql_query("UPDATE sms SET tariff = tariff + $tariff");

Annars har du redan kört frågan i början, så du kan ju plocka ur värdena och uppdatera $tariff till det rätta värdet innan du kör insert-delen.

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Testpilot

För att uppdatera en rad skriver man följande:

UPDATE sms SET tariff=200 WHERE sms='tommy'

INTO och VALUES ska du alltså bara använda tillsammans med INSERT

Edit: pscs3 var lite före men dock saknar hans lösning WHERE-delen som behövs för att inte uppdatera varenda rad i databasen.

Visa signatur

Kolla gärna in min RGB-LED-ljusstake i galleriet
[Gigabyte GA-Z97MX-Gaming 5][Intel Core i5 4690K][Corsair XMS3 16GB][Asus GeForce RTX 2060 Super Dual Evo OC]

Permalänk
Medlem

Tack ska ni ha,
Testar det direkt

Permalänk
Medlem

Ja ni, Det där fick jag inte att funka ändå, Det körs utan Error Men det uppdateras inte i databasen

Permalänk
Medlem

MySQL frågan du har fått är korrekt. Så ditt fel ligger troligen i din php-kod. Posta den uppdaterade så kan jag slänga ett get öga på den.

Permalänk
Medlem

Bara så du vet är jag ganska ny i det här, Så vet inte riktigt hur det ska vara.

$query = mysql_query("SELECT * FROM sms WHERE sms='$sms'");

if(mysql_num_rows($query) != 0)
{
mysql_query("UPDATE sms SET tariff = tariff + $tariff");
}
else
{
mysql_query("INSERT INTO sms
(nr, sms, tariff, operator) VALUES('" . $nr . "', '" . $sms . "', '" . $tariff . "', '" . $operator . "') ")
or die(mysql_error());
}

$result = mysql_query("SELECT * FROM sms
WHERE nr='$nr'") or die(mysql_error());
$row = mysql_fetch_array( $result );

echo "Tack för att du stödjer MetroGaming.Se Med ". $row['tariff']. " kr från nummret 0". $row['nr']. " http://metrogaming.se";
?>

Permalänk
Medlem

Otestad SQL men bör fungera

IF EXISTS(SELECT * FROM sms WHERE sms = 'tommy') THEN UPDATE sms SET tariff = tariff + _tariff WHERE sms = 'tommy'; ELSE INSERT INTO sms (sms, tariff) VALUES (_sms, _tariff); END IF;

Visa signatur

...

Permalänk
Medlem

Ja ni...
Det va ju inte det lättaste att göra de här,
Går ju inte som jag hade tänkt mig riktigt.
Får det inte att funka

Permalänk
Medlem

mysql_query("UPDATE sms SET tariff = tariff + $tariff");

Du har ingen Where-klasul där. Alla är vi nybörjare i början

Permalänk
Medlem

INSERT INTO `sms` (nr, sms, tariff, operator) VALUES ('nr', 'sms', 'tariff', 'operator') ON DUPLICATE KEY UPDATE `tariff`=`tariff`+value;

Gör fältet sms (eller nr?) till unique i databasen först.
INSERT INTO ... ON DUPLICATE KEY UPDATE ... lägger till en ny rad sålänge det går. Har du unique på fältet sms så går det inte att lägga till en ny rad med samma värde (conflict) och då uppdateras den raden istället.

Permalänk
Medlem

Nu fick jag error när jag test körde det i mosms simulator

Anropad URL: "http://www.MetroGaming.se/include/re_sms.php?nr=0701234567&sm..."
HTTP-Svar: "200"
SMS-Svar: "Unknown column 'value' in 'field list'"

Kod: INSERT INTO `sms` (nr, sms, tariff, operator) VALUES ('nr', 'sms', 'tariff', 'operator') ON DUPLICATE KEY UPDATE `tariff`=`tariff`+value;

Permalänk
Medlem
Skrivet av syx94:

Nu fick jag error när jag test körde det i mosms simulator

Anropad URL: "http://www.MetroGaming.se/include/re_sms.php?nr=0701234567&sm..."
HTTP-Svar: "200"
SMS-Svar: "Unknown column 'value' in 'field list'"

Kod: INSERT INTO `sms` (nr, sms, tariff, operator) VALUES ('nr', 'sms', 'tariff', 'operator') ON DUPLICATE KEY UPDATE `tariff`=`tariff`+value;

Kan det vara för att du inte har $ innan variablerna i VALUES ('nr', 'sms', 'tariff', 'operator')?

Permalänk
Medlem

Om någon har några min över kan ni kontakta mig på
Msn: Tommy_Nyqvist94@hotmail.com
Skype: love_snobben
Steam: syx94
Behöver hjälp