AprendendoC Posted August 6, 2013 at 12:14 AM Report #520925 Posted August 6, 2013 at 12:14 AM fala galera, estou com um problema na hora de executar o sql usando o pdo... segue codigo Conexao.class.php <?php /** * Classe para conexão com o Banco de Dados Usando PDO * * @author Isaias Darci Dieterich * @version 0.1 * @since 05/08/2013 * */ class Conexao extends PDO { private $dataBase = 'mysql'; private $host = 'localhost'; private $dbName = 'teste'; private $user = 'root'; private $pass = ''; private $conexao = NULL; function __construct() { try{ $this->conexao = parent::__construct($this->dataBase.':host='.$this->host.';dbname='.$this->dbName, $this->user, $this->pass); $this->conexao = parent::setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //echo 'Sucesso ao se conectar na Base de Dados'; }catch(PDOException $erro){ //echo 'Erro ao se conectar na Base de Dados'; } }//construct function __destruct(){ $this->conexao = NULL; }//destruct function inserir($objeto){ // SQL = "INSERT INTO TABELA (campos) VALUES (:campos);" $sql = "INSERT INTO usuarios ("; for($i = 0; $i < count($objeto); $i++){ $sql .= key($objeto); next($objeto); if($i < (count($objeto) - 1)){ $sql .= ", "; }else{ $sql .= ") "; } }//for reset($objeto); $sql .= "VALUES ("; for($i = 0; $i < count($objeto); $i++){ $sql .= is_numeric($objeto[key($objeto)]) ? ":".$objeto[key($objeto)] : "':".$objeto[key($objeto)]."'"; next($objeto); if($i < (count($objeto) -1)){ $sql .= ", "; }else{ $sql .= ") "; } }//for reset($objeto); $binVal = ""; for($i = 0; $i < count($objeto); $i++){ $binVal .= "':".$objeto[key($objeto)]."'"; if($i < (count($objeto) -1)){ $binVal .= ", ".key($objeto).", "; }else{ $binVal .= ", ".key($objeto); } next($objeto); }//for try{ $query = $this->prepare($sql); $query->bindValue($binVal, PDO::PARAM_STR); $query->execute(); }catch(PDOException $erroInserir){ echo 'Erro ao Inserir Dados!'.$erroInserir->getMessage(); } //echo $sql; //echo $binVal; }//inserir } ?> e o codigo da pagina de teste.php <?php include_once('conexao.class.php'); $con = new Conexao(); $testArr = array( "nome" => "Isaias", "idade" => 20); $con->inserir($testArr); ?> e o erro que ele esta acusando é este SQLSTATE[HY093]: Invalid parameter number: parameter was not defined alguem sabe m dizer o porque deste erro?
brunoais Posted August 6, 2013 at 08:57 AM Report #520935 Posted August 6, 2013 at 08:57 AM Mostra tb o erro específico da DB, esse deve conter mais informação. Não extendas classes que não foram feitas para ser extendidas a não ser que saibas bem como funcionam. Muitas vezes esse tipo de acções cria resultados inesperados, mesmo que escondidos algures. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
acao Posted August 7, 2013 at 09:20 PM Report #521152 Posted August 7, 2013 at 09:20 PM (edited) boas penso que aqui faltará a conexão. nos parametros falta o nome do campo ou o valor e não pode ser só um se no array tem dois valores. $query = $this->prepare($sql); $query->bindValue($binVal, PDO::PARAM_STR); $query = $this->conexao->prepare($sql); $query = bindValue(------, ------, PDO::param_STR); cumps acao Edited August 7, 2013 at 09:21 PM by acao
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now