Jump to content
AprendendoC

Erro com PDO

Recommended Posts

AprendendoC

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?

Edited by Rui Carlos

Share this post


Link to post
Share on other sites
brunoais

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%.

Share this post


Link to post
Share on other sites
acao

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 by acao

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

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.