Problème d'éxécution de requête "Erreur SQL! Resource id#'

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème d'éxécution de requête "Erreur SQL! Resource id#'

Problème d'éxécution de requête "Erreur SQL! Resource i

par djtec » 24 juil. 2008, 23:47

Bonsoir,

Voilà j'ai un problème avec la requête suivante:
<?php
// Déclaration de la Class Sql
	$db = new Sql();

	$db->host = $host;
	$db->login_host = $login_host;
	$db->pass_host = $pass_host;
	$db->hostname = $hostname;

	$db->sql_connect();


$sql_who = "select username, user_level 
			   from ".TABLE_SESSIONS." s, ".TABLE_USERS." u 
			   where u.user_id = s.session_user_id
			   and s.session_time >= ".( time() - 300 )."
			   order by u.username asc, s.session_ip asc";
			
$db->query = $sql_who;
$req_who = $db->sql_query();


$tpl->assign_block_vars('whoisline', array(
	'L_TITLE' => $lang['Whoisline_title'],
	'L_LEGEND' => $lang['Whoisline_legend']
));

$db->query = $req_who;
$count = $db->sql_num_rows();

if($count > 0)
{

	$db->query = $req_who;

	$userlist = '';
	
	while ($who = $db->sql_fetch_object())	
	{

		$user->author = $who->username;
		$user->user_level = $who->user_level;
	
		$userlist .= '<a href="'.PAGE_USERS_PROFIL.'?view='.$who->user_id.'">'.$user->get_color_author().'</a> ,';

	}
	
	$userlist = substr($userlist, 0, -1);
	
	$tpl->assign_block_vars('whoisline.yes', array(
		'USERLIST' => $userlist
	));
}
else
{

	$tpl->assign_block_vars('whoisline.no', array(
		'L_MESSAGE' => $lang['Whoisline_no_member']
	));

}
?>
Cette requête m'affiche Erreur SQL !Resource id #21.

Je ne comprend pas l'erreur.

Quand je fais un echo de ma requête avant le premier $db->query = $sql_who;.

J'obtiens ceci:

Code : Tout sélectionner

select username, user_level from Tn_sessions s, Tn_users u where u.user_id = s.session_user_id and s.session_time >= 1216935118 order by u.username asc, s.session_ip asc
Donc où est l'erreur?

Voici ma classe mysql:
<?php
Class Sql
{

	var $host;
	var $login_host;
	var $pass_host;
	var $hostname;
	var $query;
	var $nb;
	var $type;


	// Fonction de connexion
	function sql_connect() 
	{ 

		$c = mysql_connect($this->host, $this->login_host, $this->pass_host) or die("Erreur de connexion au serveur SQL");
		$r = mysql_select_db($this->hostname, $c) or die("Impossible de se connecter à la base de données");
				
		return $r;

	} 
		
				
	// Fonction mysql_query
	function sql_query() 
	{	

		$mysql = mysql_query($this->query) or die('Erreur SQL !'.$this->query.'<br />'.mysql_error());

		return $mysql;

	}

	// Fonction mysql_fetch_row
	function sql_fetch_row() 
	{	

		$mysql = mysql_fetch_row($this->query) or die('Erreur SQL !'.$this->query.'<br />'.mysql_error());
	
		return $mysql;

	}

	// Fonction mysql_num_rows
	function sql_num_rows() 
	{	

		$mysql = mysql_num_rows($this->query) or die('Erreur SQL !'.$this->query.'<br />'.mysql_error());
		
		return $mysql;

	}

	// Fonction mysql_fetch_array
	function sql_fetch_array() 
	{	

		$mysql = mysql_fetch_array($this->query) or die('Erreur SQL !'.$this->query.'<br />'.mysql_error());

		return $mysql;

	}

	// Fonction mysql_fetch_assoc
	function sql_fetch_assoc() 
	{	

		$mysql = mysql_fetch_assoc($this->query) or die('Erreur SQL !'.$this->query.'<br />'.mysql_error());

		return $mysql;

	}

	// Fonction mysql_fetch_object
	function sql_fetch_object() 
	{	

		$mysql = mysql_fetch_object($this->query) or die('Erreur SQL !'.$this->query.'<br />'.mysql_error());

		return $mysql;

	}

	// Fonction mysql_result
	function sql_result() 
	{	

		$mysql = mysql_result($this->query, $this->nb, $this->type) or die('Erreur SQL !'.$this->query.'<br />'.mysql_error());

		return $mysql;

	}

	// Fonction mysql_close
	function sql_close() 
	{	

		mysql_close();
	
		return;

	}

} 
?>
Et voici la structure de mes tables:

Code : Tout sélectionner

CREATE TABLE `Tn_sessions` ( `session_id` int(8) NOT NULL auto_increment, `session_user_id` mediumint(8) NOT NULL default '0', `session_start` int(11) NOT NULL default '0', `session_time` int(11) NOT NULL default '0', `session_ip` varchar(255) NOT NULL default '0', `session_page` int(11) NOT NULL default '0', `session_logged_in` tinyint(1) NOT NULL default '0', PRIMARY KEY (`session_id`) ) ENGINE=MyISAM; CREATE TABLE `Tn_users` ( `user_id` mediumint(8) NOT NULL, `user_active` varchar(11) default NULL, `username` varchar(25) NOT NULL, `user_password` varchar(32) NOT NULL, `user_session_time` int(11) NOT NULL default '0', `user_lastvisit` int(11) NOT NULL default '0', `user_level` tinyint(4) default '0', `user_posts` mediumint(8) unsigned NOT NULL default '0', `user_style` varchar(255) default NULL, `user_lang` varchar(255) default NULL, `user_rank` int(11) default '0', `user_avatar` varchar(100) default 'images/avatar/no_avatar.png', `user_email` varchar(255) default NULL, PRIMARY KEY (`user_id`), KEY `user_session_time` (`user_session_time`) ) ENGINE=MyISAM;

Merci d'avance...