Cakephp et procédures SQL Server

Par guysenpai, il y a 10 ans


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

Lartak, il y a 10 ans

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

guysenpai, il y a 10 ans

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 :)