2009-11-16 8 views
2

EDIT 2: Après avoir écrit une explication incroyablement longue plus en détail, j'ai bien sûr découvert mon problème et cela n'avait rien à voir avec la question que je posais. Cela a été provoqué parce que je créais un objet personnalisé, en attribuant un nom d'images téléchargées à sa propriété "LogoName" ... puis en créant une nouvelle version plus tard dans le code, sans assigner cette propriété au nouvel objet et en essayant de sauvegarder le nouvel objet (sans nom LogoName) dans la base de données.php Champ d'entrée apparaissant comme entier

Nous sommes désolés d'avoir perdu votre temps. Merci pour vos réponses. Ils ont tous été mis en minorité. END EDIT 2

J'ai une forme dans un site php. Le formulaire possède les options d'entrée Ville, État, Zip habituelles. ville ressemble à ceci:

<label for="city">City</label><input type="text" name="city" value="<?php echo $business->city; ?>" id="city"> 

Zip ressemble à ceci:

<label for="zip">Zip</label><input type="text" name="zip" value="<?php echo $business->zip; ?>" id="zip"> 

Quand je vérifie ma $ _POST les valeurs ressemblent à ceci: (en utilisant FirePHP)

['city'] => 'St. Louis' 
['zip'] => 12345 

Alors, naturellement, quand je mets ces valeurs dans mon objet, et essaye de sauver cet objet à la base de données (qui a Zip comme un varchar) j'obtiens des erreurs parce que Zip est identifié comme un entier.

Comment puis-je dire au formulaire de forcer la valeur Zip dans le $ _POST en tant que chaîne? Je n'ai même pas pensé à cela mais peut-être que c'est pertinent. Le formulaire est configuré pour autoriser le téléchargement d'une image, de sorte que le formulaire comporte un ensemble enctype = "multipart/form-data". Cela peut-il être à l'origine de ce problème? En dehors de ça, je ne sais pas quoi penser car j'utilise FirePHP pour enregistrer les informations de $ _POST à ​​peu près dès que le formulaire est chargé sur Submit. Je ne peux pas penser à tout ce qui pourrait causer ce problème.

+0

C'est drôle comment SQL Server gère Php. C'est le pilote SQL Server qui provoque cela. Un langage libre de type PHP et SQL Server Force le type. ça pourrait être bon, mais où est la beauté de Php alors. Cela n'arriverait pas avec MySQL. – DarthVader

+0

@unknown PHP n'est pas * sans-type *. – deceze

Répondre

1

J'ai essayé votre exemple, mais obtenir

 
    [zip] => 12345 
    [city] => Anywheresville 

Normalement, un doesn Ne vous inquiétez pas des entiers qui ne ressemblent pas à des chaînes. J'ai de la difficulté à penser à un cas où une conversion raisonnable ne se produirait pas automatiquement. Peut-être pourriez-vous poster le code qui forme la structure et génère la requête?

4

Vous pouvez le jeter à une chaîne comme celui-ci

$zip = (string) $_POST['zip']; 
+0

il essaie de convertir en chaîne non en int. – DarthVader

+0

Oui, j'ai réalisé mon erreur et mis à jour ma réponse. – alex

1

Vous pouvez faire strval($var);
ou $val.""; :)