Versio

Niet onder nul

Overzicht Reageren

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/05/2012 07:28:59
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Alexander de Jong

Alexander de Jong

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?
 
Jonathan -

Jonathan -

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
Beheerder

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