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

if($houdbaar < 0)
{
     $houdbaar + 1;
}

?>


Ik weet niet of je hier wat aan heb?
<?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
Eeehm: De UNSIGNED optie maakte het toch onmogelijk om negatieve waardes te krijgen? En het verdubbelde het bereik toch?
Ja, dat klopt.
Gewoon een voorwaarde in de query opnemen:

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.)
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.
Blanche schreef op 09.09.2007 22:20
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:
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!

Reageren