Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ron_ad2005@yahoo.com.br

[RESOLVIDO] problemas com mysql_affected_rows e mysql_num_rows

Recommended Posts

toda vez que uso mysql_affected_rows (para insert, update, delete) dah o erro:mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource e para mysql_num_rows(para select) tbm dah a mesma msg (so muda o nome da função eh claro)Como eu armazeno o valor delas em uma variavel para um pequeno mecanismo de busca, comestes warnings minha variavel não eh carregada($num_linhas_resultado = mysql_num_rows($id_resultado)....jah li o manual...mas tbm não tem nada lah...so informações sobre aquilo que eu jah sei...Alguém poderia me ajudar...??!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, tah assim (bem tem a classe consulta e como eu uso...apesar de levemente extenso tah facil de entender)

o erro dah justo na hora que eu chamo a função...

 

/******************************Código da classe Carro*****************************

function incluir($db) {			$sql = "INSERT INTO carros VALUES(";			$sql.= "'" . $this->proprietario . "',";			$sql.= "'" . $this->marca . "',";			$sql.= "'" . $this->modelo . "',";			$sql.= "'" . $this->cor . "',";			$sql.= "'" . $this->opcionais . "',";			$sql.= $this->ano_fab . ",";			$sql.= $this->ano_mod . ",";			$sql.= $this->km_atual . ",";			$sql.= $this->ult_trc . ",";			$sql.= $this->ult_rev . ",";			$sql.= "'" . $this->coment . "')";						echo $sql . "\n";			echo $db->id . " --- " . $db->bd;						$qry = new consulta($db);//Consulta faz parte da classe BD...logo abaixo			$qry->executa($sql);		}				function listar($bd) {			$sql = "SELECT * FROM carros ORDER BY proprietario";			$qry = new consulta($bd);						echo "Numero de linhas: ".$qry->nrw;			if($qry->nrw>0) {				echo "<table border=0 cellpadding=0 cellspacing=3 width=800>"; 				echo "	<tr bgcolor='#ffcc00'>";				echo "		<td><b>Proprietário</b></td>";				echo "		<td><b>Marca</b></td>";				echo "		<td><b>Modelo</b></td>";				echo "		<td><b>Cor</b></td>";				echo "		<td><b>Ano Fabricação/Modelo</b></td>";				echo " 		<td><b>Última Troca de óleo</b></td>";				echo " 		<td><b>Km Atual</b></td>";				echo " 	</tr>";				for($i=0;$i<$qry->nrw;$i++) {					echo "<tr>";					echo "<td>" . $qry->data["proprietario"] . "</td>";					echo "<td>" . $qry->data["marca"] . "</td>";					echo "<td>" . $qry->data["modelo"] . "</td>";					echo "<td>" . $qry->data["cor"] . "</td>";					echo "<td>" . $qry->data["ano_fab"] . "/" . $qry->data["ano_mod"] . "</td>";					echo "<td>" . date("d/m/Y",$qry->data["ult_trc"]) . "</td>";					echo "<td>" . $qry->data["km_atual"] . "</td>";					echo "</tr>";				}				echo "</table>";			}			else				echo "<p><b>Nenhum Carro cadastrado</b></p>";		}
/******************************Código da classe bd*****************************

function executa($sql="",$tipo="")  	{//executa	if($sql=="")		{			$this->res = 0;			$this->nrw = 0;			$this->row = -1;		}	if($this->bd->bd=="postgresql") 		{			$this->res = pg_exec($this->bd->id,$sql);			$this->nrw = pg_numrows($this->res);		}	else 		{					$this->res = mysql_query($sql,$this->bd->id);					if($this->res)								{//if				$oper = substr($sql,0,6);				switch($oper)//Esse controle eh necessario para sempre termos a variável $this->nrw carregada independentemente da operação realizada//CONFORME A OPERAÇÃO O ERRO EH MOSTRADO					/*********************************O ERRO ME APARECE AQUI....*****************************************/{//switch					case "SELECT":						$this->nrw = mysql_num_rows();						break;					case "INSERT":						echo "<BR><B>VEJA</B>: ".$this->res;						echo "Numero de linhas afetadas: ".mysql_affected_rows($this->res);						break;					case "UPDATE":						$this->nrw = mysql_affected_rows($this->res);						break;					case "DELETE":						$this->nrw = mysql_affected_rows($this->res);						break;					}//switch					$ret  =  $this->res; 				}//if			else				{//else 2					echo " <hr>";														echo " <font color='$this->color' size='$this->size' face='$this->face' > ";										echo "<strong> SQL sintaxe error! <br> </strong></font><br>";					echo "<strong> Error Code :".$this->errno = mysql_errno()."<br>  Error mesage: ".$this->errmsg = mysql_error()." </strong></font><br>";																	echo " </strong></font><br>";												echo " <hr>";					$ret = 0;					}//else 2					}//final else

Valeu pela atenção...

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem...eu coloquei esse comando somente para mostrar a sql que foi montada (que eh montada corretamente)O mais curioso que a operação de inserção,exclusão ou atualização...ocorre normalmente no bd...o problema e queesse link do resultado que aparece como inválido...$this->nrw = mysql_num_rows($this->res); dizendo que esse argumento que eu passei...pelo meno eh assim que eu interpretei né...tai aí o erroINSERT INTO carros VALUES('Ronaldo','Ford','Escort','Vermelho','asdf',1994,1994,15000,-1,1105754400,'adf') Resource id #4 --- mysqlVEJA: 1Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in c:\Projetos\classdb.php on line 161Numero de linhas afetadas:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uuuuuuuuuuuuuuuuufa foi solucionado o pobrema....seguinte segundo o manual do PHP nem sempre mysql_query() retorna um link-ressource ("espécie do ponteiro para o resultado") confome abaixo:"Somente para os comandos SELECT, SHOW, EXPLAIN ou DESCRIBE mysql_query() retorna um identificador de recurso ou FALSE se a query não foi executada corretamente. Para outros tipos de comandos SQL, mysql_query() retorna TRUE em caso de sucesso e FALSE em erro." Retirado do manual do PHP.Bem, aí eh que tah...no meu script sempre usava o $this->nrw (numero de linhas do resultado usando mysql_affected_rows e mysql_num_rows) colocando um link-ressource(ponteiro do resultado da query) como parâmetro extra que, na verdade, nem sempre tinha...o que agora eu resolvo isso com um if (so se for select, show...etc).Agradeço imensamente a atenção de todos, principalmente ao tmferreira que leu meu script, e agora eh mais uma solução dos missssstééééérios do PHP para agregar ao nosso conhecimento....t+ GaleraGrande Semana a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.