Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, estou desenvolvendo um CRUD com PHP e PDO. Criei um método para insert que recebe como parâmetro um array de objetos do tipo (telefone, usuario, login, endereço). Ao tentar inserir recebo o seguinte erro: Strict standards: Only variables should be passed by reference in... Segue abaixo o código:
Classe UsuarioDAO
<?php
include_once '../Config/Config.php';
include_once '../Conexao/ConnectionPDO.php';
/**
* Description of UsuarioDAO
*
* @author L.B.O
* @version 1.0
*/
class UsuarioDAO{
/**
*Armazena a instância de conexão com o banco de dados
* @var type
*/
private static $conn;
/**
*Armazena a sql que será executada no commit
* @var type
*/
private $sql;
/**
*Statement, responsável por executar os
* códigos sql no banco de dados
* @var type
*/
private $stmt;
/**
*Armazena o id do último registro adicionado
* ao banco de dados.
* @var type
*/
private $ultimoIdInserido;
/**
* Construtora da classe
*/
public function __construct() {
}
/**
* Método para inserir dados no banco
* @param type $arrayObjeto: Contém objetos do tipo telefone, usuário, login...
*/
public function save($arrayObjeto){
try {
#Variável local para armazenar o objeto usuário vindo do formulario
$usuario = $arrayObjeto[0];
#Variável local para armazenar o objeto endereço vindo do formulario
$endereco = $arrayObjeto[1];
#Obtém uma instância de conexão com o banco de dados
self::$conn = ConnectionPDO::getInstance();
#Inicia o transação
self::$conn->beginTransaction();
$this->sql = "INSERT INTO ".TB_USU."(".CAMPOS_USU.")
VALUES(:IDLOG,
:IDTIP_USU,
:IDDOC,
:IDEND,
:NOMUSU,
:EMAUSU,
:STATUSUSU,
:DATCADUSU,
:ANUNCIOGRATIS,
:ANUNCIOPAGO)";
#Preparando a query
$this->stmt = self::$conn->prepare($this->sql);
$this->stmt->bindParam(":IDLOG",$usuario->getIdLoginUsu(),PDO::PARAM_INT);
$this->stmt->bindParam(":IDTIP_USU",$usuario->getIdTipoUsuarioUsu(),PDO::PARAM_INT);
$this->stmt->bindParam(":IDDOC",$usuario->getIdDocumentoUsu(),PDO::PARAM_INT);
$this->stmt->bindParam(":IDEND",$usuario->getIdEnderecoUsu(),PDO::PARAM_INT);
$this->stmt->bindParam(":NOMUSU",$usuario->getNomeUsu(),PDO::PARAM_STR);
$this->stmt->bindParam(":EMAUSU",$usuario->getEmailUsu(),PDO::PARAM_STR);
$this->stmt->bindParam(":STATUSUSU",$usuario->getStatusUsu(),PDO::PARAM_STR);
$this->stmt->bindParam(":DATCADUSU",$usuario->getDataCadastroUsu(),PDO::PARAM_STR);
$this->stmt->bindParam(":ANUNCIOGRATIS",$usuario->getAnuncioGratisUsu(),PDO::PARAM_STR);
$this->stmt->bindParam(":ANUNCIOPAGO",$usuario->getAnuncioPagoUsu(),PDO::PARAM_STR);
$this->stmt->execute();
#obtem o ID do último usuario cadastrado
$this->ultimoIdInserido = self::$conn->lastInsertId();
#Executa o commit
self::$conn->commit();
} catch (PDOException $e) {
#Executa o rollBack em caso de erro
self::$conn->rollBack();
echo "Erro de exceção: " . $e->getMessage() . " Código: " . $e->getCode();
}
}
}
?>
O erro acontece neste trecho do código:
$this->stmt->bindParam(":IDLOG",$usuario->getIdLoginUsu(),PDO::PARAM_INT);
$this->stmt->bindParam(":IDTIP_USU",$usuario->getIdTipoUsuarioUsu(),PDO::PARAM_INT);
$this->stmt->bindParam(":IDDOC",$usuario->getIdDocumentoUsu(),PDO::PARAM_INT);
$this->stmt->bindParam(":IDEND",$usuario->getIdEnderecoUsu(),PDO::PARAM_INT);
$this->stmt->bindParam(":NOMUSU",$usuario->getNomeUsu(),PDO::PARAM_STR);
$this->stmt->bindParam(":EMAUSU",$usuario->getEmailUsu(),PDO::PARAM_STR);
$this->stmt->bindParam(":STATUSUSU",$usuario->getStatusUsu(),PDO::PARAM_STR);
$this->stmt->bindParam(":DATCADUSU",$usuario->getDataCadastroUsu(),PDO::PARAM_STR);
$this->stmt->bindParam(":ANUNCIOGRATIS",$usuario->getAnuncioGratisUsu(),PDO::PARAM_STR);
$this->stmt->bindParam(":ANUNCIOPAGO",$usuario->getAnuncioPagoUsu(),PDO::PARAM_STR);
Poderiam me ajudar????
Grato
Carregando comentários...