IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

erreur php dans fonction [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 177
    Par défaut erreur php dans fonction
    Salut à tous,
    Je suis entrain de m'essayer à l'optimisation de mon code php sql-server 2005.
    Pour ce faire j'essaye de mettre les parties de requetes sql commune dans une fonction et à partir d'une codition d'y ajouter la condition where qui vas bien. Cependnant j'ai une erreur de syntaxe et je n'arrive pas à la trouver quelqu'un pourrait-il m'aider?

    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
    16
    17
    18
    19
    20
    21
    function recherche_contact($nom=null, $entreprise=null){
    		$sql = "SELECT 	CONTACTS.[ID_CONTACT]
    							,CONTACTS.[NOMCONTACT]
    							,CONTACTS.[PRENOMCONTACT]
    							,CONTACTS.[MAILPRO]
    							,CONTACTS.[MAILPERSO]
    							,CONTACTS.[TELPORT]
    							,CONTACTS.[TELFIXE]
    							,CONTACTS.[FAX]
    							,STATUTS.[STATUT]
    							,ENTREPRISE.[NOMENTREPRISE]
    						FROM ([BDD_TOOL_V2].[dbo].[STATUTS] JOIN [BDD_TOOL_V2].[dbo].[CONTACTS] ON CONTACTS.[ID_STATUT] = STATUTS.[ID_STATUT])
    															JOIN [BDD_TOOL_V2].[dbo].[ENTREPRISE] ON CONTACTS.[ID_ENTREPRISE] = ENTREPRISE.[ID_ENTREPRISE]'";
    						if($entreprise != null){
    							$sql = $sql."' WHERE ENTREPRISE.[NOMENTREPRISE] = '".$entreprise."'";
    						}
    						else{
    							$sql = $sql."'WHERE CONTACTS.[NOMCONTACT] LIKE '".$nom."%'";
    						}
    return $sql;
    }
    erreur generé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Warning: odbc_do() [function.odbc-do]: SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]Syntaxe incorrecte vers ''., SQL state 37000 in SQLExecDirect in C:\wamp\www\test_v3.0\Controleur\controleur_recherche_contact.php on line 34
    37000
    Merci de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 53
    Par défaut
    Salut,

    Pourquoi mettez les variables $nom et $entreprise a 'null' dans votre fonction.
    Elles seront toujours nulles...

    Ecrivez plutot:
    function recherche_contact($nom, $entreprise){...}

    enfin je pense...

    byby
    JB

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 177
    Par défaut suite
    ben en fait j'ai des condisions avant cette fonction et lors de l'appel de le fonction, une des deux valeur est vide. le fait de mettre recherche_contact($nom=null, $entreprise=null){...} inflige une valeur par defaut si la variable est vide. Cependnant, si une des deux variables n'est pas vide le null ne lui sera pas affecté.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 53
    Par défaut
    Ok , autant pour moi.

    Sinon il y a une quote qui se balade a la fin de ton select a la fin de la ligne...
    Peut tu nous specifier quel est la ligne 34?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 177
    Par défaut suite
    la ligne 34 correspond à l'execution de la requete soit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = odbc_do($connexion, $sql) or die(odbc_error());

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 88
    Par défaut
    Peut-être

    remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = $sql."' WHERE ENTREPRISE.[NOMENTREPRISE] = '".$entreprise."'";
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql .= "' WHERE ENTREPRISE.[NOMENTREPRISE] = '".$entreprise."'";

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 177
    Par défaut merci
    merci de votre aide mais la solution résidé dans les " et les ' je poste la bonne syntaxe pour ce que ça intéresse. Merci de otre aide.

    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
    16
    17
    18
    19
     
    $sql = "SELECT 	CONTACTS.[ID_CONTACT]
    	            ,CONTACTS.[NOMCONTACT]
    		,CONTACTS.[PRENOMCONTACT]
    		,CONTACTS.[MAILPRO]
    		,CONTACTS.[MAILPERSO]
    		,CONTACTS.[TELPORT]
    		,CONTACTS.[TELFIXE]
    		,CONTACTS.[FAX]
    		,STATUTS.[STATUT]
    		,ENTREPRISE.[NOMENTREPRISE]
    	FROM ([BDD_TOOL_V2].[dbo].[STATUTS] JOIN [BDD_TOOL_V2].[dbo].[CONTACTS] ON CONTACTS.[ID_STATUT] = STATUTS.[ID_STATUT])
    					JOIN [BDD_TOOL_V2].[dbo].[ENTREPRISE] ON CONTACTS.[ID_ENTREPRISE] = ENTREPRISE.[ID_ENTREPRISE]";
    						if($entreprise != null){
    							$sql = $sql."WHERE ENTREPRISE.[NOMENTREPRISE] = '".$entreprise."'";
    						}
    						else{
    							$sql = $sql."WHERE CONTACTS.[NOMCONTACT] LIKE '".$nom."%'";
    						}

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Par défaut
    bonjour,
    Pour optimiser, il faut déjà :
    1-ne pas écrire de SQL embarqué mais des procédures stockées (c'est mieux pour la rapidité, la sécurité),
    2-ne pas utiliser ODBC mais un pilote natif (Download the SQL Server 2005 Driver for PHP chez www.microsoft.com).
    3-écrire du SQL optimisé (donc tester les requêtes sous SQL Server: see SQL Server Query Execution Plan Analysis)
    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. array php dans fonction javascript?
    Par vidzo dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 29/09/2009, 09h29
  2. Utiliser le résultat d'un fichier php dans fonction javascript
    Par theshark85 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/07/2009, 12h07
  3. [SQL-Server] Erreur php dans fonction
    Par fasyr dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/05/2009, 13h45
  4. [PHP-JS] pb de variable php dans fonction Js
    Par logone dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/06/2006, 23h20
  5. récupérer les erreurs php dans des exceptions
    Par jeanvincent dans le forum Langage
    Réponses: 6
    Dernier message: 14/10/2005, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo