Ir para conteúdo

Arquivado

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

masterloge

For para criar bindParam

Recommended Posts

Boas

 

Eu estou a tentar gerar os bindParam automaticamente através de um array mas não esta a funcionar e eu sei que e por causa da maneira de como estou a criar , mas também não sei qual e a maneira mais correcta de fazer isso alguém me poderá ajudar?

 

Código do for

for($i=0;$i<=count($var);$i++)
{
$STH2->bindParam($i+1,'$'.$var[$i]);
'$'.$var[$i]=$_GET["".$var[$i].""];
}

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde, teria como você postar o codigo completo? não estou vendo a instanciação do PDO, nem a query dentro do prepare. recomendo que você utilize bindValue do PDO pois fica mais semântico, segue o link de exemplo.

http://php.net/manual/pt_BR/pdostatement.bindvalue.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro esta aqui

include 'con.php';
$STH = $DBH -> prepare('SELECT  *  FROM formulario WHERE id_local= ? ');
$STH -> bindParam(1, $pagid);
$STH->execute();
		while ($row = $STH -> fetch()) 
	{
		 $campos .= $row['nome_bd'].', ';
		 $values .=" ? , ";
		 $var[] =$row['id_campo'];
		
	}
 $campos=substr($campos, 0, -2);
 $values=substr($values, 0, -2);
$STH2 = $DBH->prepare("INSERT INTO teste (".$campos.") values (".$values.")");
print_r($STH2);
for($i=0;$i<=count($var);$i++)
{
$STH2->bindParam($i+1,'$'.$var[$i]);
'$'.$var[$i]=$_GET["".$var[$i].""];
}
$STH2->execute();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite, dei uma refatorada no seu código, mas isso não garante que vai funcionar.

 

<?php include 'con.php';$sth = $DBH->prepare('SELECT  *  FROM formulario                       WHERE id_local= :id_local');$sth->bindValue(":id_local", $pagid);$sth->execute();$dados = $sth->fetch(PDO::FETCH_ASSOC);$sth->closeCursor(); $campos = '';$values = '';$var = array(); foreach ($dados as $row) {  $campos .= $row['nome_bd'].', ';  $values .=" ? , ";  $var[] =$row['id_campo'];} $campos=substr($campos, 0, -2);$values=substr($values, 0, -2); for($i=0;$i<=count($var);$i++){  $sth = $DBH->prepare("INSERT INTO teste (:campo) values (:valor)");  $sth->bindValue(':campo', $campo[$i]);  $sth->bindValue(':valor', $values[$i]);  $sth->execute();} $sth->closeCursor();

 

mesmo fazendo a refatoração não entendi exatamente o porque da necessidade de dar insert na tabela passando o nome do campo dinamicamente, se esse campo não existir no banco de dados não vai funcionar do mesmo jeito.

me explica exatamente todo o contexto do seu problema que poderei ajudar melhor. no momento vou ficar off, respondo outro dia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os campos que eu passo dinamicamente são campos que existem na base de dados eu tenho outro codigo que me gera um formulario automaticamente consoante os dados que estão naquela tabela formulario

 

Nessa tabela guardo o nome da variavel da qual faço o get e nome do campo da BD a que esta associado .

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.