[RESOLU] erreur syntaxe SQL

Eléphant du PHP | 172 Messages

09 janv. 2013, 14:56

Bonjour et Meilleurs voeux à Tous :D ,



voilà ce qui m'amène: j'ai une erreur de syntaxe SQL , si vous avez une idée, d'ou provient l'erreur ? Par avance merci
 function query($query)
	    {
	        global $fog_log,$fog_ip;
	        if ($this->connected===false)return false;
	        if (!preg_match('`/^\s*select.*\bunion\s+select\s/si`',$query)) {
	            ++$this->nb_queries;
	            $fog_log->add('VERBOSE','SQL_QUERY',$query);
	            $deb = microtime();
	            $this->result = $this->driver->query($query,$this->id);
	            $this->query_time += FOGMicroDif($deb);
	            if ($this->result !== false)
	                return $this->result;
	            trigger_error('SQL Error - Query : <br /> ' . stripslashes(htmlentities($query)) . '<br /> <strong>Error</strong> : ' .  stripslashes(nl2br(htmlentities($this->error()))),E_USER_WARNING);
	        }else
	            trigger_error('Hacking Attempt - Query : <br /> ' . stripslashes(htmlentities($query)) ,E_USER_ERROR);
	        $this->connected = false;
	        return false;
        }

ViPHP
xTG
ViPHP | 7331 Messages

09 janv. 2013, 15:29

Un :
echo $query;
Et une copie du résultat nous aiderai pas mal...

Car là tu nous montre un os en nous demandant si le chien est bien portant. :mrgreen:

Eléphant du PHP | 172 Messages

09 janv. 2013, 15:37

oh, désolé :lol:

Wed 2013-01-09 11:47:11 [mon ip] ERROR : PHP User Warning : SQL Error - Query :
SELECT mod,nb,txt,img,id from fog_ranks order by nb
Error : 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 'nb,txt,img,id from fog_ranks order by nb' at line 1 /htdocs/forum/libs/required/classes.inc#306

Wed 2013-01-09 11:47:28 [mon ip] ERROR : PHP User Warning : SQL Error - Query :
INSERT into fog_ranks (nb,txt,img,mod) VALUES(1,'','5stars.gif','1')
Error : 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 'mod) VALUES(1,'','5stars.gif','1')' at line 1 /htdocs/forum/libs/required/classes.inc#306

Wed 2013-01-09 11:47:44 [mon ip] ERROR : PHP User Warning : SQL Error - Query :
INSERT into fog_ranks (nb,txt,img,mod) VALUES(0,'admin','5stars.gif','0')
Error : 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 'mod) VALUES(0,'admin','5stars.gif','0')' at line 1 /htdocs/forum/libs/required/classes.inc#306

ViPHP
xTG
ViPHP | 7331 Messages

09 janv. 2013, 15:58

mod est un mot clé réservé. ;)
C'est l'opération modulo.

Il faut donc l'échapper :
`mod`
Mais le mieux pour rester portable d'un SGBD à l'autre est encore de bannir ces mots clés de ton modèle.

Invité
Invité n'ayant pas de compte PHPfrance

09 janv. 2013, 19:49

Merci de suivre mon Problème. J'ai essayé de mettre `mod` dans differents endroit mais sans résoudre le problème. La rectification de l'erreur est certainement dans le code suivant , mais à quel endroit ?
//////////////////
	///// RANGS
	//////////////////
	<?php
	
	elseif($fog_q == 4){

		$fog_array_users = array();
		$fog_i = 0;
		$fog_result = $fog_db->query('SELECT pseudo,id from '.FOG_TABLES_PREF.'users where rang<'.$fog_user->row['rang'].(($fog_user->row['rang'] == 6)?(' or id='.$fog_user->row['id']):''));
		while($fog_row = $fog_db->fetch_row($fog_result)){
			$fog_array_users['pseudo'][$fog_row[1]] = $fog_row[0];
			$fog_array_users['id'][$fog_row[1]] = $fog_row[1];
		}
		$fog_smarty->assign('users',$fog_array_users);

		if($fog_action == 1){
			$fog_mod = $_POST['fog_mod']?1:0;
			$fog_nb = $fog_mod?$_POST['fog_uid']:intval(trim($_POST['fog_nb']));
			$fog_txt = htmlentities(trim($_POST['fog_txt']));
			$fog_img = $_POST['fog_img'];
			if(!$fog_mod || in_array($fog_nb,$fog_array_users['id']))
				$fog_db->query('INSERT into '.FOG_TABLES_PREF.'ranks (nb,txt,img,mod) VALUES('.$fog_nb.',\''.$fog_txt.'\',\''.$fog_img.'\',\''.$fog_mod.'\')');
		}elseif($fog_action == 2){
			$fog_rankid = $_GET['fog_rankid'];
			if(isset($_POST['fog_posted'])){
				$fog_rank = $fog_db->fetch_assoc($fog_db->query('SELECT mod,nb,txt,img,id from '.FOG_TABLES_PREF.'ranks where id='.$fog_rankid.' limit 1 '));
				$fog_mod = $_POST['fog_mod']?1:0;
				$fog_nb = $fog_mod?$_POST['fog_uid']:intval(trim($_POST['fog_nb']));
				$fog_txt = htmlentities(trim($_POST['fog_txt']));
				$fog_img = $_POST['fog_img'];
				if((!$fog_rank['mod'] || in_array($fog_rank['nb'],$fog_array_users['id'])) && (!$fog_mod || in_array($fog_nb,$fog_array_users['id'])))
					$fog_db->query('UPDATE '.FOG_TABLES_PREF.'ranks SET nb='.$fog_nb.',txt=\''.$fog_txt.'\',img=\''.$fog_img.'\',mod=\''.$fog_mod.'\' where id='.$fog_rankid);
			}
			$fog_rank = $fog_db->fetch_assoc($fog_db->query('SELECT mod,nb,txt,img,id from '.FOG_TABLES_PREF.'ranks where id='.$fog_rankid.' limit 1 '));
			$fog_smarty->assign('rank',$fog_rank);
		}elseif($_POST['fog_selectedranks']){
			$fog_query = '('.implode(',',(array) $_POST['fog_selectedranks']).')';
			$fog_db->query('DELETE from '.FOG_TABLES_PREF.'ranks where id IN '.$fog_query);
		}
		
		
		$fog_i = 0;
		$fog_array = array();
		$result = $fog_db->query('SELECT mod,nb,txt,img,id from '.FOG_TABLES_PREF.'ranks order by nb');
		while($fog_row = $fog_db->fetch_assoc($result)){
			if(!$fog_row['mod'])
				$fog_array['nb'][$fog_i++] = $fog_row;
			elseif($fog_row['mod'] == 1){
				$fog_array['user'][$fog_i] = $fog_row;
				$fog_array['user'][$fog_i++]['user'] = $fog_ub->Get($fog_row['nb'],'pseudo');
			}
		}
		$fog_smarty->assign('ranks',$fog_array);
		
		$fog_array = array();
		$fog_i=0;
		$fog_dirpath = FOG_DIR.'img/ranks/';
		if ($fog_dir = opendir($fog_dirpath)){
    		while ($fog_file = readdir($fog_dir))
       			if(is_file($fog_dirpath.$fog_file)){
					$fog_file_info = getimagesize($fog_dirpath.$fog_file);
            		if ((strPos($fog_file,'.jpg') && $fog_file_info[2] === 2)||(strPos($fog_file, '.gif') && $fog_file_info[2] === 1)||(strPos($fog_file, '.png') && $fog_file_info[2] === 3))
					  $fog_array[$fog_i++] = $fog_file;
				}
    		closedir($fog_dir);
		}
		$fog_smarty->assign('dispos',$fog_array);
		
		unset($$fog_array,$fog_existent,$fog_row,$fog_i);
	}
	?>

ViPHP
xTG
ViPHP | 7331 Messages

09 janv. 2013, 20:33

Editeur de texte > rechercher > remplacer
Il n'y a pas de méthodes miracles. ;)

Et si cela ne fonctionne toujours pas c'est sans doute que le message d'erreur a changé.

Invité
Invité n'ayant pas de compte PHPfrance

09 janv. 2013, 22:49

OK, c'est bien comme çà que je procède.
Il va falloir que je trouve la bonne page. Je verrai çà demain car je fatigue.

Encore merci et bonne nuit

Eléphant du PHP | 172 Messages

19 janv. 2013, 15:42

Bonjour :D ,
Sur le serveur dans ma base de donnés mod est bien `mod`.

Je n'ai pas trouvé d'où venait le problème, mais en réinstallant le forum sur mon pc avec EasyPHP, je me suis rendu compte qu'il n'y avait pas de PB.

J'ai donc exporté en remplacement de la partie corrompu sur mon hébergeur et tout est rentré dans l'ordre.

Merci du dérangement :P