Jump to content
Sign in to follow this  
lhborges

Erro bind_param

Recommended Posts

Boa noite galera, to com uma dificuldade em passar o paremetro via prepare statement, ao utilizar a função 'bind_param' ele me retorna um erro falando que eu não posso passar funcoes apenas variaveis, porem não gostaria de utilizar uma variavel.

Vi também a possibilidade de utilizar a função bind_value, entre outras possibilidades, mas todas inuteis, fico agradecido deste de já se alguem puder ajudar!

Segue o erro abaixo:

Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in C:\Program Files\VertrigoServ\www\AGC\model\noticia\NoticiaDao.php on line 12


E o codigo abaixo:

function AdicionarNoticiaDao(Noticia $nt){
		$sql = "INSERT INTO noticia(titulo,texto,resumo,data,aprovacao,destaque) VALUES(?,?,?,?,?,?)";
		
		$con = new ConexaoBanco();
		$con->Open();
		$param = $con->acaoQuery($sql);
		
		$param->bind_param('s',$nt->getTitulo());
		$param->bind_param('s',$nt->getTexto());
		$param->bind_param('s',$nt->getResumo());
		$param->bind_param('s',$nt->getData());
		$param->bind_param('b',$nt->getAprovacao());
		$param->bind_param('b',$nt->getDestaque());		
		
		if($param->execute())
			return true;
		else
			return false;
		
		$con->__destruct();
	}

Share this post


Link to post
Share on other sites

@Marcos_imasters

Ele está usando mysqli e não PDO.

@lhborges
http://php.net/manual/en/mysqli-stmt.bind-param.php

De fato, por você não estar utilizando PDO, você deve passar todos os parâmetros de uma vez só: veja bem:

$param->bind_param(
    'ssssbb',
    $nt->getTitulo(),
    $nt->getTexto(),
    $nt->getResumo(),
    $nt->getData(),
    $nt->getAprovacao(),
    $nt->getDestaque()
);

Outro detalhe, é que bind_param passa os parâmetros como referência. Se o método get*() não permitir referência, um E_STRICT será lançado.

  • +1 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By kamikazzi
      Boas,
      será que me pode dizer o significa alguns destes "comandos" php?
       
    • By lhborges
      Boa noite pessoa,

      Estou com uma dúvida e é a seguinte, estou criando uma classe onde eu vou passar os seguintes parametros;
       
      VALORES - será um array com os valores dos campos EX($estearray[6]);
      SQL - será o codigo mysql que irei utilzar (EX: INSERT INTO tabela(campo1,campo2) VALUES(?,?));
      TIPO - é o tipo dos valores passados em BIND_PARAM ( EX: 'ssiidd');
       
      Porém estou com dificuldade de passar o parametro com call_user_func_array
       
      Bom o seguinte codigo que está passado é:
      class EnviarMysql{ function ExecutarMysql($sql,$valores,$tipo){ $con = new ConexaoBanco(); $con->open(); $param = $con->acaoQuery($sql); $total = array_merge($tipo,$valores); print_r($total); call_user_func_array(array($param, 'bind_param'), $total); if($param->execute()) print 'Success! ID of last inserted record is : ' .$param->insert_id .'<br>'; } } E O ERRO QUE APARECE É O SEGUINTE:
       
      Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given in C:\Program
      Files\VertrigoServ\www\projetoAgc\factory\EnviarMysql.php on line 15Call Stack#TimeMemoryFunctionLocation10.0018257424{main}( )...\NoticiaController.php:020.0094312656NoticiaModelo->Adicionar( )...\NoticiaController.php:1430.0094312800NoticiaDao->AdicionarDao( )...\NoticiaModelo.php:640.0096315176NoticiaDao->executarSql( )...\NoticiaDao.php:750.0096315384EnviarMysql->ExecutarMysql( )...\NoticiaDao.php:1460.0128331512call_user_func_array:{C:\Program Files\VertrigoServ\www\projetoAgc\factory\EnviarMysql.php:15} ( )...\EnviarMysql.php:15
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.