Warning: sprintf() [function.sprintf]: Too few arguments

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par sff, 16 Mai 2009.

  1. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    533
    J'aime reçus:
    0
    Bonjour,

    Depuis peu je me retrouve avec une erreur dont je comprends pas le problème. Voici l'erreur complet :

    Le problème se situe dans cette page (connexion.php) :

    Code:
    <?
    class mysql
    {
    
    	var      $host    =    "..."; // Serveur SQL
    	var      $user    =    "...";              // Login pour le serveur SQL
    	var      $pass    =    "...";           // Mot de passe pour le serveur SQL
    	var      $bdd     =    "...";          // Nom de vôtre Base De Données
    
    
    	function connect()
    	{
    		@mysql_connect($this->host,$this->user,$this->pass) or die("Erreur de connexion au serveur SQL");
    		@mysql_select_db($this->bdd) or die("Impossible de se connecter à la base de données");
    
    		$this->host = "";$this->user = "";$this->pass = "";
    
    	}
    
    	
       function query_sprintf($query)
    	{	
    
    		$mysql = sprintf($query);
    		
    	return($mysql);
    }
    
    }
    ?>
    La ligne 32 correspond à cette ligne : $mysql = sprintf($query);

    Concernant mes requêtes elle fonctionnent comme ceci :

    Code:
    include("includes/connexion.php");
    $mysql = new mysql();
    $mysql->connect();
    
    $mysql->query_sprintf("INSERT INTO ".$mysql->pref."_discussions
    						(message, pseudo, titre, date, forum_id, message_id, mb_id, ip)
    				VALUES('%s', '%s', '%s', '%s', '%d', '%d', '".$session['id']."', '".$_SERVER['REMOTE_ADDR']."')",
     				mysql_real_escape_string($content),
                    mysql_real_escape_string($_POST['pseudo']),
    				mysql_real_escape_string($titre),
    				mysql_real_escape_string($date),
    				mysql_real_escape_string($frm),
    				mysql_real_escape_string($id));
    Peut - être quelqu'un pourra me dire d'où vient le problème.

    Merci d'avance
     
  2. Aaarrrgggh
    Aaarrrgggh WRInaute occasionnel
    Inscrit:
    16 Mars 2009
    Messages:
    298
    J'aime reçus:
    0
    logiquement, quand tu as cette erreur, cela signifie qu'il y a plus de directives à remplacer que d'arguments transmis à sprintf. Dans ta fonction query_sprint_f, tu passes bien la requête, mais non les arguments à remplacer à la volée.

    Cela devrait être : $mysql = sprintf($query, $arg1, $arg2, $arg3, etc.);
     
  3. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    Le problème, c'est que ta méthode query_sprintf ne prend qu'un seul argument, et que donc tous les autres sont ignorés, et que tu ne passes que ce premier argument à sprintf, qui en voudrait plus pour remplir tous les %x.

    Je te conseille te jeter un oeil du côté de vsprintf, func_get_args, et array_shift, pour faire, par exemple:
    Code:
    function query_sprintf
    {
     $args = func_get_args();
     $format = array_shift($args);
     $mysql = vsprintf($format,$args);
     return($mysql);
    }
    
    Pas testé, mais ça ne devrait pas être très loin.

    Sinon, je te conseille te jeter un coup d'oeil du côté de PDO, avec des :nom ou des ? il s'occupera comme un grand de faire les escapes qu'il faut et tout, comme avec une librairie ODBC ou avec DBI en perl. Voir les exemples dans:

    http://uk2.php.net/manual/fr/pdostatement.execute.php

    Jacques.
     
Chargement...
Similar Threads - Warning sprintf() [function Forum Date
jos-Warning Problèmes de référencement spécifiques à vos sites 29 Septembre 2015
Warning: MagpieRSS: Failed to fetch Développement d'un site Web ou d'une appli mobile 15 Avril 2015
PHP Warning incompréhensible Développement d'un site Web ou d'une appli mobile 5 Mars 2015
Page blanche sur mon site Warning: require_once Demandes d'avis et de conseils sur vos sites 22 Février 2014
Google phishing warning, besoin d'aide... Administration d'un site Web 8 Septembre 2012
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource Développement d'un site Web ou d'une appli mobile 11 Janvier 2012
Warning open_basedir restriction in effect / ECONNREFUSED Problèmes de référencement spécifiques à vos sites 10 Novembre 2010
[PHP] Probleme de WARNING étrange... Développement d'un site Web ou d'une appli mobile 25 Février 2009
Warning: file_get_contents Développement d'un site Web ou d'une appli mobile 13 Janvier 2009
Warning: Could not find/open font Administration d'un site Web 26 Novembre 2008
Warning: Invalid argument supplied for foreach() joomla + virtuemart Développement d'un site Web ou d'une appli mobile 17 Novembre 2008
Warning: cannot previsualiser Fire Board Développement d'un site Web ou d'une appli mobile 13 Novembre 2008
Warning: preg_match() [function.preg-match]: Développement d'un site Web ou d'une appli mobile 22 Août 2008
message ou redirection en cas de Warning: mysql_connect() Développement d'un site Web ou d'une appli mobile 12 Février 2008
erreur PHP Warning: mysql_fetch_array(): supplied argument Développement d'un site Web ou d'une appli mobile 23 Novembre 2006
Warning+php Développement d'un site Web ou d'une appli mobile 28 Juillet 2006
Warning : mkdir ! Administration d'un site Web 10 Août 2005
No ending matching delimiter '>' Warning: Compilation fai Administration d'un site Web 17 Juillet 2005
Erreur dans google "Warning: main(): Failed opening ... Administration d'un site Web 14 Mars 2004