Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Je veux exécuter une procedure avec SQL Server, j'ai fais ça une première fois pour tester

        $conn = ConnectionManager::get('default');

        /* Utilise une procédure stockée */
        $matricule = 100001;
        $nom = 'AMONKOU                                            YAPO EUGENE                                                                                         ';
        $stmt = $conn->execute('adherent :matricule, :nom', ['matricule' => $matricule, 'nom' => $nom]);
        $rows = $stmt->fetch('assoc');
        debug($rows);die(); ```

et j'ai pas eu de souci mais avec celui là j'ai un souci

        $conn = ConnectionManager::get('default');

        $numsaise = isset($this->request->query['numsaise']) ? $this->request->query('numsaise') : '';

        $stmt = $conn->execute('verifbonligne :numsaise', ['numsaise' => $numsaise]);
        $count = $stmt->fetch('assoc');

        $this->set(compact('count'));
        $this->set('_serialize', ['count']);```

Ce que je veux

je veux pouvoir recupérer le resultat de ma requête comme avec le premier code

Ce que j'obtiens

mais la j'ai cette erreur "Error: SQLSTATE[42000]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]La procédure ou fonction 'verifbonligne' attend le paramètre '@numsaise', qui n'a pas été fourni."

2 réponses


guysenpai
Auteur
Réponse acceptée

oui elle etait null. Mais j'ai pu régler mon probleme en faisant ça

$stmt = $conn->prepare('verifbonligne @numsaise = :numsaise, @ETB_CODE = :ETB_CODE, @nb = :nb');
$stmt->execute(['numsaise' => $numsaise, 'ETB_CODE' => $ETB_CODE, 'nb' => $count]);

je rappelle que ma procédure a 3 paramètres dont 2 IN et 1 OUT.
Merci d'avoir répondu même si j'ai pu me démerder tout seul :)

Bonjour.
Le problème vient peut-être du fait que la valeur de la variable $numsaise est peut-être vide, non ?