rog a dit:il y en a un qui est généré à l'install et que tu peux modifier
rog
Où $sql_connect_serveur = mysqli_connect($bd['serveur'], $bd['login'], $bd['pass']); // Identifiant de connection au serveur SQL
/* **********************************************
gestionErreurSql()
- Gestion des erreurs retourné par le serveur SQL
- Dernière version : 27/05/07
********************************************** */
function gestionErreurSql() {
global $sql_connect_serveur;
$exp_sql_erreur = explode('\'', mysqli_error($sql_connect_serveur) ); // Découpe du message d'erreur retourné par mysqli_error()
// Sélection du numéro d'erreur SQL pour déterminer le message d'erreur
switch(mysqli_errno($sql_connect_serveur) ) {
case 1040: // Too many connections
return 'Trop de connections simultanées.';
break;
case 1044: // Access denied for user: 'login' to database 'nombase'
return 'La base de données « '.$exp_sql_erreur[3].' » n\'a pas été trouvée.';
break;
case 1045: // Access denied for user: 'login' (Using password: YES)
return 'L\'utilisateur désigné « '.$exp_sql_erreur[1].' » n\'a pas été trouvé.';
break;
case 1046: // No Database Selected
return 'Aucune base de données n\'à été sélectionnée.';
break;
case 1052: // Column: 'champ' in where clause is ambiguous
return 'La clause WHERE est ambiguë pour la colonne '.$exp_sql_erreur[1].'.';
break;
case 1053: // Server shutdown in progress
return 'Le serveur SQL à été arrêté.';
break;
case 1054:
// Sélection du message d'erreur
switch($exp_sql_erreur[3]) {
case 'field list': // Unknown column 'nomChamp' in 'field list'
return 'Le champ « '.$exp_sql_erreur[1].' » précisé dans la liste des champs n\'a pas été trouvé.';
break;
case 'where clause': // Unknown column 'nomChamp' in 'where clause'
return 'Le champ « '.$exp_sql_erreur[1].' » précisé dans la clause WHERE n\'a pas été trouvé.';
break;
default:
return mysqli_error($sql_connect_serveur);
}
break;
case 1062: // Duplicate entry
return 'Entrée dupliquée pour « '.$exp_sql_erreur[1].' ».';
break;
case 1064: // You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'requete'
return 'Une erreur de syntaxe SQL se trouve dans la requête « '.$exp_sql_erreur[1].' ».';
break;
case 1065: // Query was empty
return 'Aucune requête SQL n\'à été trouvée.';
break;
case 1109: // Unknown table 'nom_table' in where clause
case 1146: // Idem
return 'La table « '.$exp_sql_erreur[1].' » n\'a pas été trouvée dans la clause WHERE.';
break;
case 2002: // Can't connect to local MySQL server through socket 'chemnin d'accès'
return 'Échec lors de la connection au serveur SQL.';
break;
case 2003: // Can't connect to MySQL server on 'serveur'
return 'La connection n\'a pas pu s\'établir sur le serveur « '.$exp_sql_erreur[1].' ».';
break;
case 2005: // Unknown MySQL Server Host 'serveur' (2)
return 'Le serveur SQL « '.$exp_sql_erreur[1].' » n\'a pas été trouvé.';
break;
case 2013: // Lost connection to MySQL server during query
return 'La connection au serveur SQL à été perdue lors de la requête.';
break;
default:
return mysqli_error($sql_connect_serveur);
}
}
$sql_result = mysqli_query($sql_connect_serveur, $sql); // Envoi la requête au serveur SQL
if($sql_result === FALSE ) {
// Message pour le visiteur
$mess_visiteur = '<p align="center"><strong><font color="#FF0000">Une erreur est survenue dans la base de données.<br />';
$mess_visiteur .= 'L\'administrateur a été prévenu et résoudra le problème au plus vite.</font></strong><br />';
$mess_visiteur .= '<a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'].'">Cliquez sur ce lien pour recharger la page.</a></p>';
// Message pour l'admin
$mess_admin = 'Erreur SQL : '.mysqli_errno($sql_connect_serveur)."\n\r";
$mess_admin .= 'Serveur SQL : '.$bd['serveur']."\n\r";
$mess_admin .= 'Base de données : '.$bd['base']."\n\r";
$mess_admin .= 'Description de la requête : '.$sql_desc."\n\r";
$mess_admin .= 'Requête effectuée : '.$sql."\n\r";
$mess_admin .= 'Message d\'erreur : '.gestionErreurSql()."\n\r";
// Sujet de l'e-mail
$mail_sujet = 'Échec lors de l\'exécution d\'une requête SQL'; // Sujet de l'email
// Là tu peux envoyer un e-mail ou remplir un fichier, ou une BDD ; au choix
exit($mess_visiteur);
}
# pour php
php_admin_value error_reporting E_ALL
# pour apache tu mets le chemin vers ton fichier log
ErrorLog /var/log/apache2/192.168.0.2/error.log
L'extension mysqli vous permet d'accéder aux fonctionnalités fournies par MySQL 4.1 et supérieur. Pour plus d'informations sur le serveur de base de données MySQL, veuillez-vous rendre sur » http://www.mysql.com/
Version du client MySQL: 5.0.51a
Extensions PHP utilisées: mysql
OTP a dit:Quoi qu'il y ait au dessus, requête OK ou pas, j'ai ça en retour : "Resource id #3"
* Erreur SQL : 1139
* Serveur SQL : nom du serveur
* Base de données : nom de la base
* Description de la requête : trouver le domaine « http://www.bing.com/search?q=sciences+et+vie+++&form=QBRE&filt=all » dans les partenaires.
* Requête effectuée : SELECT partenaire_id FROM gen_partenaire WHERE partenaire_url REGEXP 'http://www.bing.com/search?q=sciences+et+vie+++&form=QBRE&filt=all'
* Message d'erreur : Erreur « repetition-operator operand invalid » provenant de regexp.
* Valeur : 'http://www.bing.com/search?q=sciences+et+vie+++&form=QBRE&filt=all'
* Code erreur internet :
* Date et heure d'accès : 12/04/10 à 11:24:25
* Url demandée : /
* Provenance : http://www.bing.com/search?q=sciences+et+vie+++&form=QBRE&filt=all
* Navigateur utilisé : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.1; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.1.4322)
* Méthode utilisée : GET
* Chaine de requête :
* Nom de Domaine : 46.176-66-87.adsl-dyn.isp.belgacom.be
* IP du visiteur : C'est privé ^^
OTP a dit:J'ai ça sur l'admin :
Version du client MySQL: 5.0.51a
Extensions PHP utilisées: mysql
function gestionErreurSql() {
global $sql_connect_serveur;
$exp_sql_erreur = explode('\'', mysqli_error($sql_connect_serveur)); // Découpe du message d'erreur retourné par mysqli_error()
// Sélection du numéro d'erreur SQL pour déterminer le message d'erreur
switch(mysqli_errno($sql_connect_serveur)) {
case 1040: // Too many connections
return 'Trop de connections simultanées.';
break;
case 1044: // Access denied for user: 'login' to database 'nombase'
return 'La base de données « ' . $exp_sql_erreur[3] . ' » n\'a pas été trouvée.';
break;
case 1045: // Access denied for user: 'login' (Using password: YES)
return 'L\'utilisateur désigné « ' . $exp_sql_erreur[1] . ' » n\'a pas été trouvé.';
break;
case 1046: // No Database Selected
return 'Aucune base de données n\'a été sélectionnée.';
break;
case 1052: // Column: 'champ' in where clause is ambiguous
return 'La clause WHERE est ambiguë pour la colonne ' . $exp_sql_erreur[1] . '.';
break;
case 1053: // Server shutdown in progress
return 'Le serveur SQL a été arrêté.';
break;
case 1054:
// Sélection du message d'erreur
switch($exp_sql_erreur[3]) {
case 'field list': // Unknown column 'nomChamp' in 'field list'
return 'Le champ « ' . $exp_sql_erreur[1] . ' » précisé dans la liste des champs n\'a pas été trouvé.';
break;
case 'where clause': // Unknown column 'nomChamp' in 'where clause'
return 'Le champ « ' . $exp_sql_erreur[1] . ' » précisé dans la clause WHERE n\'a pas été trouvé.';
break;
default:
return mysqli_error($sql_connect_serveur);
}
break;
case 1062: // Duplicate entry
return 'Entrée dupliquée pour « ' . $exp_sql_erreur[1] . ' ».';
break;
case 1064: // You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'requete'
return 'Une erreur de syntaxe SQL se trouve dans la requête « ' . $exp_sql_erreur[1] . ' ».';
break;
case 1065: // Query was empty
return 'Aucune requête SQL n\'a été trouvée.';
break;
case 1109: // Unknown table 'nom_table' in where clause
case 1146: // Idem
return 'La table « ' . $exp_sql_erreur[1] . ' » n\'a pas été trouvée dans la clause WHERE.';
break;
case 1139: // Got error 'repetition-operator operand invalid' from regexp
return 'Erreur « ' . $exp_sql_erreur[1] . ' » provenant de regexp.';
break;
case 2002: // Can't connect to local MySQL server through socket 'chemnin d'accès'
return 'Échec lors de la connection au serveur SQL.';
break;
case 2003: // Can't connect to MySQL server on 'serveur'
return 'La connection n\'a pas pu s\'établir sur le serveur « ' . $exp_sql_erreur[1] . ' ».';
break;
case 2005: // Unknown MySQL Server Host 'serveur' (2)
return 'Le serveur SQL « ' . $exp_sql_erreur[1] . ' » n\'a pas été trouvé.';
break;
case 2013: // Lost connection to MySQL server during query
return 'La connection au serveur SQL a été perdue lors de la requête.';
break;
default:
return 'Message à traduire : ' . mysqli_error($sql_connect_serveur);
}
}
$sql_result = mysqli_query($sql_connect_serveur, $sql); // Envoi la requête au serveur SQL
// Détermination de la requête
if ($sql_result === FALSE ) {
récupération de ton erreur en appelant la fonction fonction gestionErreurSql()
Dans mon cas, ça passe par mail
}
OTP a dit:Il semblerait que ce ne soit pas activé sur les mutus OVH.
OTP a dit:Quelle offre ?
affiche phpinfo();OTP a dit:J'ai ça sur l'admin :
Version du client MySQL: 5.0.51a
Extensions PHP utilisées: mysql
Leonick a dit:et regarde si tu as mysqli qui s'affiche. Normalement oui chez ovh
Configure Command './configure' '--enable-discard-path' '--with-config-file-path=/usr/local/lib' '--enable-sigchild' '--with-pcre-regex' '--enable-magic-quotes' '--enable-short-tags' '--with-exec-dir=/home/' '--with-openssl=/usr' '--disable-rpath' '--enable-libgcc' '--disable-pic' '--with-zlib=/usr' '--enable-bcmath' '--enable-calendar' '--with-curl=/usr' '--with-gdbm=/usr' '--with-db3=/usr' '--enable-dbase' '--enable-xslt=/usr' '--with-xslt-sablot=/usr' '--with-dom=/usr' '--with-dom-xslt=/usr' '--with-kerberos' '--with-dom-exslt=/usr' '--enable-exif' '--enable-mbstring' '--enable-mbregex' '--enable-filepro' '--enable-ftp' '--with-ming=/usr/local' '--with-gd' '--with-expat-dir=/usr' '--enable-gd-native-tt=/usr' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--with-ttf=/usr' '--with-freetype-dir=/usr' '--with-t1lib=/usr' '--with-gettext=/usr' '--with-imap=/var/log/ovh/imap-2004g/' '--with-imap-ssl=/var/log/ovh/imap-2004g/' '--with-mcrypt=/usr' '--with-mhash=/usr' '--with-mysql=/usr' '--with-mysqli=/usr/bin/mysql_config' '--with-pdflib=/usr/local/' '--with-jpeg-dir=/usr' '--with-png-dir' '--with-tiff-dir' '--enable-trans-sid' '--with-regex=system' '--enable-sysvsem' '--enable-sysvshm' '--with-xpm-dir=/usr' '--with-zziplib=/usr' '--enable-wddx' '--with-zip=/usr/lib' '--with-sablot=/usr' '--enable-inline-optimization' '--with-gnu-ld' '--enable-soap' '--with-pspell' '--with-pgsql=/usr' '--with-gmp'
$sql_connect_serveur = mysql_connect(host,user,pass);
function connectBd($bd_infos) {
global $bd_param, $sql_connect_serveur;
$bd_param = $bd_infos; // Paramètres de connection de la base de données
$sql_connect_serveur = mysqli_init(); // Initialise MySQLi et retourne une ressource à utiliser avec mysqli_real_connect()
$option = mysqli_options($sql_connect_serveur, MYSQLI_INIT_COMMAND, 'SET NAMES utf8'); // Passage à l'UTF8
$option_bis = mysqli_options($sql_connect_serveur, MYSQLI_OPT_CONNECT_TIMEOUT, 10); // Délai maximal de connection en seconde
$sql_connect = mysqli_real_connect($sql_connect_serveur, $bd_param['serveur'], $bd_param['login'], $bd_param['pass'], $bd_param['base']); // Connection au serveur SQL et sélection de la base
// Vérification de la validité des identifiants de connection
if ($sql_connect_serveur === FALSE || $option === FALSE || $option_bis === FALSE || $sql_connect === FALSE) {
// Inclusion des fonctions nécessaires
require_once(FICH_INC_FUNC_EMAIL_ADMIN);
// Message pour le visiteur
$alerte_visiteur = '<p align="center"><strong><font color="#FF0000">Une erreur est survenue dans la base de données.<br /><br />';
$alerte_visiteur .= 'L\'administrateur a été prévenu et travaille sur le rétablissement du site.</font></strong><br /><br />';
$alerte_visiteur .= '<a href="http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] . '">Cliquez sur ce lien pour tenter de résoudre le problème automatiquement.</a></p>';
// Message pour l'admin
$texte_plain = 'Type d\'alerte : ';
$texte_html = '<ul><li>Type d\'alerte : </li><ul>';
if ($sql_connect_serveur === FALSE) {
$texte_plain = 'Échec lors de l\'initialisation de MySQLi.' . "\n";
$texte_html = '<li>Échec lors de l\'initialisation de MySQLi.</li>';
}
if ($option === FALSE) {
$texte_plain .= 'Échec lors du passage à l\'UTF 8.' . "\n";
$texte_html .= '<li>Échec lors du passage à l\'UTF 8.</li>';
}
if ($option_bis === FALSE) {
$texte_plain .= 'Échec lors l\'initialisation du délai maximal de connection.' . "\n";
$texte_html .= '<li>Échec lors l\'initialisation du délai maximal de connection.</li>';
}
if ($sql_connect === FALSE) {
$texte_plain .= 'Échec lors de la connection.' . "\n";
$texte_html .= '<li>Échec lors la connection.</li>';
}
$texte_plain .= "\r";
$texte_plain .= 'Serveur SQL : ' . $bd_param['serveur'] . "\n";
$texte_plain .= 'Base de données : ' . $bd_param['base'] . "\n";
$texte_plain .= 'Erreur SQL : ' . mysqli_errno($sql_connect_serveur) . "\n\r";
$texte_html .= '</ul>';
$texte_html .= '<li>Serveur SQL : <b>' . $bd_param['serveur'] . '</b></li>';
$texte_html .= '<li>Base de données : <b>' . $bd_param['base'] . '</b></li>';
$texte_html .= '<li>Erreur SQL : <b>' . mysqli_errno($sql_connect_serveur) . '</b></li></ul>';
$sujet = 'Échec lors de la connection au serveur SQL'; // Sujet de l'email
// Envoi un e-mail à l'administrateur
emailAdmin($texte_plain, $texte_html, $sujet);
exit($alerte_visiteur);
}
return $sql_connect_bd;
}
Leonick a dit:tu es sur 300plan ?
function connectBd($bd_infos) {
global $bd_param, $sql_connect_serveur;
$bd_param = $bd_infos; // Paramètres de connection de la base de données
$sql_connect_serveur = mysql_connect($bd_param['serveur'], $bd_param['login'], $bd_param['pass'], $bd_param['base']); // Connection au serveur SQL et sélection de la base
// Vérification de la validité des identifiants de connection
if ($sql_connect_serveur === FALSE) {
// Message pour le visiteur
$alerte_visiteur = '<p align="center"><strong><font color="#FF0000">Une erreur est survenue dans la base de données.<br /><br />';
$alerte_visiteur .= 'L\'administrateur a été prévenu et travaille sur le rétablissement du site.</font></strong><br /><br />';
$alerte_visiteur .= '<a href="http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] . '">Cliquez sur ce lien pour tenter de résoudre le problème automatiquement.</a></p>';
// Message pour l'admin
$texte_plain = 'Type d\'alerte : ';
$texte_html = '<ul><li>Type d\'alerte : </li><ul>';
if ($sql_connect === FALSE) {
$texte_plain .= 'Échec lors de la connection.' . "\n";
$texte_html .= '<li>Échec lors la connection.</li>';
}
$texte_plain .= "\r";
$texte_plain .= 'Serveur SQL : ' . $bd_param['serveur'] . "\n";
$texte_plain .= 'Base de données : ' . $bd_param['base'] . "\n";
$texte_plain .= 'Erreur SQL : ' . mysql_errno($sql_connect_serveur) . "\n\r";
$texte_html .= '</ul>';
$texte_html .= '<li>Serveur SQL : <b>' . $bd_param['serveur'] . '</b></li>';
$texte_html .= '<li>Base de données : <b>' . $bd_param['base'] . '</b></li>';
$texte_html .= '<li>Erreur SQL : <b>' . mysql_errno($sql_connect_serveur) . '</b></li></ul>';
$sujet = 'Échec lors de la connection au serveur SQL'; // Sujet de l'email
// Ici ton code pour t'envoyer un mail éventuellement
exit($alerte_visiteur);
}
return $sql_connect_bd;
}
function gestionErreurSql() {
global $sql_connect_serveur;
$exp_sql_erreur = explode('\'', mysql_error($sql_connect_serveur)); // Découpe du message d'erreur retourné par mysql_error()
// Sélection du numéro d'erreur SQL pour déterminer le message d'erreur
switch(mysql_errno($sql_connect_serveur)) {
case 1040: // Too many connections
return 'Trop de connections simultanées.';
break;
case 1044: // Access denied for user: 'login' to database 'nombase'
return 'La base de données « ' . $exp_sql_erreur[3] . ' » n\'a pas été trouvée.';
break;
case 1045: // Access denied for user: 'login' (Using password: YES)
return 'L\'utilisateur désigné « ' . $exp_sql_erreur[1] . ' » n\'a pas été trouvé.';
break;
case 1046: // No Database Selected
return 'Aucune base de données n\'a été sélectionnée.';
break;
case 1052: // Column: 'champ' in where clause is ambiguous
return 'La clause WHERE est ambiguë pour la colonne ' . $exp_sql_erreur[1] . '.';
break;
case 1053: // Server shutdown in progress
return 'Le serveur SQL a été arrêté.';
break;
case 1054:
// Sélection du message d'erreur
switch($exp_sql_erreur[3]) {
case 'field list': // Unknown column 'nomChamp' in 'field list'
return 'Le champ « ' . $exp_sql_erreur[1] . ' » précisé dans la liste des champs n\'a pas été trouvé.';
break;
case 'where clause': // Unknown column 'nomChamp' in 'where clause'
return 'Le champ « ' . $exp_sql_erreur[1] . ' » précisé dans la clause WHERE n\'a pas été trouvé.';
break;
default:
return mysql_error($sql_connect_serveur);
}
break;
case 1062: // Duplicate entry
return 'Entrée dupliquée pour « ' . $exp_sql_erreur[1] . ' ».';
break;
case 1064: // You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'requete'
return 'Une erreur de syntaxe SQL se trouve dans la requête « ' . $exp_sql_erreur[1] . ' ».';
break;
case 1065: // Query was empty
return 'Aucune requête SQL n\'a été trouvée.';
break;
case 1109: // Unknown table 'nom_table' in where clause
case 1146: // Idem
return 'La table « ' . $exp_sql_erreur[1] . ' » n\'a pas été trouvée dans la clause WHERE.';
break;
case 1139: // Got error 'repetition-operator operand invalid' from regexp
return 'Erreur « ' . $exp_sql_erreur[1] . ' » provenant de regexp.';
break;
case 2002: // Can't connect to local MySQL server through socket 'chemnin d'accès'
return 'Échec lors de la connection au serveur SQL.';
break;
case 2003: // Can't connect to MySQL server on 'serveur'
return 'La connection n\'a pas pu s\'établir sur le serveur « ' . $exp_sql_erreur[1] . ' ».';
break;
case 2005: // Unknown MySQL Server Host 'serveur' (2)
return 'Le serveur SQL « ' . $exp_sql_erreur[1] . ' » n\'a pas été trouvé.';
break;
case 2013: // Lost connection to MySQL server during query
return 'La connection au serveur SQL a été perdue lors de la requête.';
break;
default:
return 'Message à traduire : ' . mysql_error($sql_connect_serveur);
}
}