2010-03-19 7 views
1

Scénario: - Je dois appeler la procédure stockée MYSQL de PHP et effectuer quelques opérations (environ 15 commandes) sur la base de données.Passer un objet de PHP vers Mysql Procédure stockée

Problème: - Je dois appeler la procédure stockée avec 36 paramètres. Lot de paramètres. Je ne pense pas que ce soit une bonne idée de passer ces nombreux paramètres individuels et même entendu passer des paramètres individuels augmente le trafic réseau.

Recherche: - J'ai créé un objet de données à côté PHP et est-il possible que je peux créer le même genre d'objet dans MYSQL et de transmettre cet objet comme paramètre et extraire les données de l'objet dans MYSQL procédure stockée

Répondre

2

Vous ne pouvez pas passer d'objets entre différents programmes. Seules les variables de type scalaire peuvent être transmises.
Vous pouvez utiliser un mécanisme de sérialisation pour convertir votre tableau de données en chaîne et retour.

Le mécanisme de sérialisation est plus facile à base fendue, nous avons tous utilisé dans notre premier script gueastbook :)
Il y a aussi json encoding et PHP serialize() parmi les plus utilisés.

+0

Merci pour la réponse rapide. Je peux sérialiser en PHP et encore unerialize en PHP. Mais ici, je veux passer l'objet sérialisé en tant que paramètre de la procédure stockée MYSQL et vouloir désérialiser en MySQL. – user268982

+1

Je sais que vous voulez passer l'objet sérialisé en tant que paramètre à la procédure stockée MYSQL. Donc, vous devez inventer une fonction unserialize pour votre procédure stockée. Ou google. Il ne peut pas être format de php serialize cependant. Je ne vois pas beaucoup de problèmes à passer tous les paramètres cependant. Vous pouvez l'insérer dans une table temporaire, puis sélectionner dans la procédure –

+0

Merci de m'avoir lancé les idées. Maintenant, je suis clair à ce sujet et va inventer une fonction unserialize pour ma procédure stockée. Je ne pense pas que c'est un gros problème maintenant. Encore une fois merci pour votre conseil – user268982

Questions connexes