2010-05-27 2 views
1

J'ai un insert:Pourquoi insère-t-on des 0 au lieu d'espaces vides dans ma base de données en utilisant php?

$sql = 'INSERT into orders SET 
fax_int_prefix = "'.$_SESSION['fax_int_prefix'].'", 
fax_prefix = "'.$_SESSION['fax_prefix'].'", 
fax_first = "'.$_SESSION['fax_first'].'", 
fax_last = "'.$_SESSION['fax_last']; 

La valeur de tous ces domaines est qu'ils sont juste vide avant l'insertion. Voici un exemple d'un d'entre eux, j'echo'd juste avant l'insert:

$_SESSION[fax_prefix] = 

Pour une raison quelconque, il insère le nombre entier 0, au lieu d'une valeur vide ou nulle, comme il se doit. Pourquoi insère-t-il des 0 au lieu d'espaces vides dans ma base de données?

Répondre

2

Vérifiez la structure de votre table. Il est possible qu'il ne soit pas de type char ou varchar (ou qu'il ait et ait une valeur par défaut définie sur '0'). Pour ce faire, vous pouvez utiliser phpmyadmin, SQLyog ou d'autres programmes d'administration MySQL.

Edit: Si vous voulez stocker des entiers, mais la possibilité de aucune valeur alors assurez-vous que le type est annulable. i.e .: column_name INT(n) DEFAULT NULL

+0

Eh bien, le champ est défini sur entier. Je veux que les informations qu'ils fournissent dans ces champs soient entières ou vides (rien). Ai-je vraiment besoin de changer le type de données juste pour faire ce que je veux faire? – zeckdude

+3

Si vous voulez qu'ils soient vides au lieu de 0, assurez-vous d'autoriser null pour le champ. – JYelton

+0

Ils permettent pour Null. La case Null est cochée dans phpmyadmin et la valeur par défaut est NULL. Comment peut-il toujours enregistrer la valeur "0" si j'ai ces options NULL définies? – zeckdude

0

Vérifiez le schéma de votre base de données. Très probablement, ils sont des champs entiers ou autres.

SHOW FIELDS FROM orders; 

ou

SHOW CREATE TABLE orders; 

pourrait aider. De plus, simplement imprimer une variable n'est pas une bonne vérification, utilisez plutôt var_dump().

+0

Qu'est-ce qui ne va pas avec l'utilisation de champs entiers? Je veux que les informations qu'ils fournissent dans ces champs soient entières ou vides (rien). – zeckdude

Questions connexes