Niet onder nul

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Baken

Baken

09/09/2007 20:17:00
Quote Anchor link
Beste mensen,

Ik heb een SQL query:
$sql = mysql_query("UPDATE .... SET houdbaar = houdbaar - 1");

Werkt opzich prima, maar ik wil als houdbaar is kleiner dan 0 dat er dan geen één afgaat, ofwel ik wil geen negatieve getallen.

Hoe kan ik mijn query zo inrichten dat dit niet gebeurt?

Jelmer
 
PHP hulp

PHP hulp

25/04/2024 16:55:13
 
Dutch Caffeine

Dutch Caffeine

09/09/2007 20:24:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

if($houdbaar < 0)
{

     $houdbaar + 1;
}


?>


Ik weet niet of je hier wat aan heb?
 
Nicoow Unknown

Nicoow Unknown

09/09/2007 20:46:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$query
= "
SELECT houdbaar
FROM ......"
;
$houdbaar = mysql_query($query);
if($houdbaar > 0)
{

$sql = mysql_query("UPDATE .... SET houdbaar = houdbaar - 1");
}

//en als dat niet zo is,, gaat hij verder zonder iets anders te doen
?>

Edit:

hier zit nog geen foutafhandeling in
Gewijzigd op 01/01/1970 01:00:00 door Nicoow Unknown
 
Mark L

Mark L

09/09/2007 20:52:00
Quote Anchor link
Eeehm: De UNSIGNED optie maakte het toch onmogelijk om negatieve waardes te krijgen? En het verdubbelde het bereik toch?
 
- -

- -

09/09/2007 20:53:00
Quote Anchor link
Ja, dat klopt.
 
Frank -

Frank -

09/09/2007 21:17:00
Quote Anchor link
Gewoon een voorwaarde in de query opnemen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
UPDATE
  tabelnaam
SET
  houdbaar = houdbaar - 1
WHERE
  houdbaar > 0

Wanneer 'houdbaar' een integer is, zul je met deze update-query nooit negatieve getallen krijgen. Tevens krijg je geen foutmelding wanneer de waarde reeds 0 is, met een UNSIGNED gebeurt dat wel. (kan overigens wenselijk zijn, ligt aan jouw situatie.)
 
Joren de Wit

Joren de Wit

09/09/2007 22:20:00
Quote Anchor link
Quote:
Tevens krijg je geen foutmelding wanneer de waarde reeds 0 is, met een UNSIGNED gebeurt dat wel.
Ik weet het niet zeker, maar volgens mij geeft MySQL hier standaard weer eens geen foutmelding.
 
Frank -

Frank -

09/09/2007 22:34:00
Quote Anchor link
Blanche schreef op 09.09.2007 22:20:
Quote:
Tevens krijg je geen foutmelding wanneer de waarde reeds 0 is, met een UNSIGNED gebeurt dat wel.
Ik weet het niet zeker, maar volgens mij geeft MySQL hier standaard weer eens geen foutmelding.
Ik weet zeker dat MySQL een ***BEEEEEEP*** product is maar ik krijg hier lokaal (God zij dank!) toch een foutmelding op een negatieve waarde op een unsigned integer:
Quote:
Warning: #1264 Out of range value adjusted for column 'id' at row 1

Het zou ook niet veel gekker moeten worden...

Desondanks: PgFrank advisteert PgSQL!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.