Ir para conteúdo

POWERED BY:

Arquivado

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

Iury Borges

Object of class PDOStatement could not be converted to int

Recommended Posts

Notice: Object of class PDOStatement could not be converted to int in C:\xampp\htdocs\estudo\php\execuao.php on line 65

 

código php:

<?php
//abre a conexão para o banco de dados
$pdo= new PDO('mysql:host=localhost;dbname=tabela','root','');


//insere os dados no banco de dados
$ins=$pdo->prepare("INSERT INTO produtos(quantidade_maria,quantidade_carla,quantidade_cadela, quantidade_marta,quantidade_mirna,preco_maria,preco_carla,preco_cadela,preco_marta,preco_mirna) VALUES (':quantidade_maria',':quantidade_carla',':quantidade_cadela', ':quantidade_marta',':quantidade_mirna','preco_maria',':preco_carla',':preco_cadela',':preco_marta',':preco_mirna')");
$name = 'one';
$rua = 1;
$ins->execute();

//abre uma seção
session_start();

 

 
 $select="SELECT quantidade_maria,quantidade_carla,quantidade_cadela, quantidade_marta,quantidade_mirna,preco_maria,preco_carla,preco_cadela,preco_marta,preco_mirna FROM produtos";
 
 
 


 
//aqui que começa meu problema
foreach($pdo->query($select) as $row){
	echo $row['quantidade_maria']." <input type='button' value="/$del=$pdo->prepare('DELETE FROM tabela WHEREid= quantidade_maria');
	
	
	$del->bindparam(1,$_POST['quantidade_maria']);
	$del->execute();
	
	"/><br>";

gente eu inseri a função delete no value, para quando eu clicar ele deletasse.


Mais só parece isso:

 

Notice: Object of class PDOStatement could not be converted to int in C:\xampp\htdocs\estudo\php\execuao.php on line 65

Compartilhar este post


Link para o post
Compartilhar em outros sites
$del->bindparam(1,$_POST['quantidade_maria']);

Como você definiu o nome dos values

VALUES (':quantidade_maria',':quantidade_carla',':quantidade_cadela', ':quantidade_marta',':quantidade_mirna','preco_maria',':preco_carla',':preco_cadela',':preco_marta',':preco_mirna')

Você tem que passar esse mesmo nome do Bind

Compartilhar este post


Link para o post
Compartilhar em outros sites


foreach($pdo->query($select) as $row){
	echo $row['quantidade_maria'];
	echo " <input type='button' value="/$del=$pdo->prepare('DELETE FROM tabela WHERE id= quantidade_maria');
	
	
$del->bindparam(1,":quantidade_maria");
$del->execute();
	
	"/><br>";
	
	
}

Mudei, mais deu esse error:

 

Notice: Object of class PDOStatement could not be converted to int in C:\xampp\htdocs\estudo\php\execuao.php on line 66

0

Fatal error: Cannot pass parameter 2 by reference in C:\xampp\htdocs\estudo\php\execuao.php on line 69

Compartilhar este post


Link para o post
Compartilhar em outros sites

não

 

Alguém me da uma luz

 

 

Não acho que ta bagunçado, ele ta todo comentado

 

 

Bem eu mudei meu código tentando ver se da alguma mudança, mais agora o problema é outro, eu quero excluir um dado do meu banco de dados, ao clicar em delete ele vai em outra página php e executa o script pra deleta mais quando vou dentro do meu banco de dados ele não deleta nada.

 

 

código executa.php:

<?php//abre a conexão para o banco de dados$pdo= new PDO('mysql:host=localhost;dbname=tabela','root','');//insere os dados no banco de dados$ins=$pdo->prepare("INSERT INTO produtos(quantidade_maria,quantidade_carla,quantidade_cadela, quantidade_marta,quantidade_mirna,preco_maria,preco_carla,preco_cadela,preco_marta,preco_mirna) VALUES (':quantidade_maria',':quantidade_carla',':quantidade_cadela', ':quantidade_marta',':quantidade_mirna','preco_maria',':preco_carla',':preco_cadela',':preco_marta',':preco_mirna')");$name = 'one';$rua = 1;$ins->execute();  //aqui seleciona os dados do meu banco de dados $select="SELECT quantidade_maria,quantidade_carla,quantidade_cadela, quantidade_marta,quantidade_mirna,preco_maria,preco_carla,preco_cadela,preco_marta,preco_mirna FROM produtos";    //aqui imprime todos o dados na telaforeach($pdo->query($select) as $row){	echo $row['quantidade_maria'];	echo " 		<form action='delete.php'>		<input type='submit' value='Delete'><br>		</form>	";			}?>

delete.php:

<?php//abre a conexão para o banco de dados$pdo= new PDO('mysql:host=localhost;dbname=tabela','root','');//deleta um arquivo$del="DELETE FROM produtos WHERE quanidade_maria = ':quantidade_maria'";$stmt=$pdo->prepare($del);		$stmt->bindparam(':quantidade_maria',$_POST['quantidade_maria'],PDO::PARAM_INT);$stmt->execute();if($stmt)echo "Deletado";elseecho "Não deletou";?>

Detalhe nome do meu banco é tabela e minha tabela é produtos estão corretos.

Compartilhar este post


Link para o post
Compartilhar em outros sites
executa o script pra deleta mais quando vou dentro do meu banco de dados ele não deleta nada.

 

então esse código Não executa o script, não concorda?

 

Detalhe nome do meu banco é tabela e minha tabela é produtos estão corretos.

 

 

ta.. mas tem certeza que:

1 - seu form está passando dados?

2 - vc tem uma coluna chamada "quanidade_maria"?

 

dicas básicas: use "echos" à vontade p/ ir testando seus códigos;

veja mensagens de erro em PDO tb..

pesquise mais sobre Utilizar "prepared statements" e "bind params"

aqui:

http://www.rafaelwendel.com/2011/12/tutorial-pdo-php-data-object/

 

agora tente caprichar mais nessa pg "executa".. tipo 1 logica assim:

 

<?php
$pdo=new PDO('mysql:host=localhost;dbname=XXXX','root','');
$select=$pdo->prepare("SELECT * FROM XXXX");
$select->execute();
while($row = $select->fetch(PDO::FETCH_OBJ))
{
echo $row->nome;
?>

<form action="delete.php?id=<?php echo $row->id;?>" method="post">
<input type='submit' value='Delete'><br>
</form>
<?php
}
?>

isso ai retorna nomes e ids de produtos e passa o id p/ a pg delete.php..

(visualmente eu sei q está tosca mas espero q t ajude a pegar a lógica)..

 

tente ai, cara.. e de boa, boa sorte p/ vc..

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos por partes.

 

No seu primeiro código, o que estava errado era isso aqui:

echo " <input type='button' value="/$del=$pdo->prepare('DELETE FROM tabela WHERE id= quantidade_maria');

Exatamente nesse trecho:

"... value="/$del ...

Percebeu essa barra ali, estava tentando dividir uma string por um objeto PDOStatement.

 

Alias, adicionar a query como value também não funcionará.

 

Já no segundo código, imagino que seja isso:

WHERE quanidade_maria = ...

não seria "quantidade_maria"?

 

Outros detalhes, o uso de comentários não transforma um código ruim em um bom. Segundo Robert "UncleBob" Martin, a qualidade de um código é mensurado pela métrica "wtf per minute" que um revisor de código, ou qualquer outro desenvolvedor, fala por minuto ao ler seu código.

 

6a0120a85dcdae970b012877707a45970c-pi.pn

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.