2009-05-04 6 views
0

J'ai essayé de faire ce travail pour les dernières heures. J'ai un proc stockée simple appelé get_log_entries:PEAR MDB2 executeStoredProc et retourne un jeu de résultats. Possible? Ça vaut le coup?

CREATE DEFINER=`root`@`localhost` PROCEDURE `get_log_entries`(p_min_id INT) 
BEGIN 
    SET p_min_id = IFNULL(p_min_id, -1); 
    SELECT * FROM db_log WHERE item_id > p_min_id; 
END 

Il est mort simple et il renvoie des résultats en deux colonnes: item_id (int) et log_description (varchar). J'essaye d'exécuter ceci en utilisant l'objet MDB2, mais jusqu'ici aucune chance. Voici le code qui tente de le faire:

$conn = MDB2::factory('mysql://myUser:[email protected]/my_db'); 

if (PEAR::isError($conn)) { 
    die ("Cannot connet to DB(10): " . $conn->getMessage()); 
} 

// loading the Function module 
$conn->loadModule('Function'); 

$params = array('null'); 

$result = $conn->executeStoredProc('get_log_entries', $params); 

if (PEAR::isError($result)) { 
    $msg = $result->getMessage() . "<br /><br />" . $result->getUserInfo(); 
    die ($msg); 
} 

A ce stade, cette belle erreur apparaît avec le message:

« _doQuery: [Message d'erreur: Impossible exécuter l'instruction] [Dernière exécutés requête: CALL get_log_entries()] [native Code : 1312] [message natif: PROCÉDURE wh_search.get_log_entries ne peuvent pas revenir un jeu de résultats dans le contexte donné] »

Maintenant, j'ai quelques questions:
1. Est-il même possible d'exécuter des SP en utilisant MDB2 et de renvoyer des ensembles de résultats?
2. Est-il préférable d'écrire moi-même une classe wrapper pour les fonctions PHP-MySQL "natives"?

Merci!

Répondre

0

Nevermind, enveloppant mysqli pour appeler SP. Aussi beaucoup de plaisir ...

Questions connexes