Bonjour,

Je travaille sur un projet PHP 5.2 / MSSQL 2005. Je voudrais récupérer une erreur retournée par le serveur SGBD. La fonction mssql_get_last_message() est censée répondre à mon besoin.

Voici l'exemple #1 de la doc de cette fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<?php
// Connexion à MSSQL et sélection de la base de données
mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php');
 
// Une requête qui échoue
$query = @mssql_query('SELECT * FROM [php].[dbo].[not-found]');
 
if (!$query) {
    // La requête a échoué, retourné un message d'erreur et nous
    // pouvons l'obtenir avec mssql_get_last_message()
    die('Erreur MSSQL : ' . mssql_get_last_message());
}
?>
J'essaye de suivre cette exemple, avec mssql_query(), qui passe une requête INSERT. Je veux provoquer une erreur en insérant une ligne avec un id déjà existant (l'id est la clé primaire de la table).

La requête dans Microsoft SQL Server Client me renvoie
Violation of PRIMARY KEY constraint 'UK_MISSIONS'. Cannot insert duplicate key in object 'dbo.T_MISSIONS'. The statement has been terminated.
C'est le libellé que j'attends (la violation). Problème, mssql_get_last_message() ne me renvoie que The statement has been terminated, ce qui ne sert à rien, vu qu'il n'y a pas de détail de l'erreur.

Je n'arrive pas à obtenir le message détaillé de l'erreur. A priori il n'y a pas d'autres fonctions de ce genre. Existe-t-il une autre solution pour y arriver ?

Merci pour votre aide.