Ir para conteúdo

POWERED BY:

Arquivado

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

erison

[Resolvido] array bindValue pdo

Recommended Posts

queria saber se tem como ja lista uma array no bindValue

 

tipo tenho um array que

 

$array = array(

'str'=>array('campo1'=>'erison','campo2'=>'texto'),

'int'=>array('campo3'=>10,'campo4'=>5.2)

);

 

 

quero que ele ja liste no insert

 

todos que tiverem dentro da array str

coloque no bindValue(PDO::PARAM_STR);//STRING

coloque no bindValue(PDO::PARAM_INT);//INTERIO

 

tem como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode passar um array para o execute(), fazer os binds.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Detalhe adicional. Quando usa-se a função execute() para passar todos os os valores de uma única vez, os valores serão tratados como STRINGS, diferente do que que alguns programadores conhecem, que seria automático.

 

An array of values with as many elements as there are bound parameters in the SQL statement being executed. All values are treated as PDO::PARAM_STR.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entedie?

coloca um exemplo

 

Detalhe adicional. Quando usa-se a função execute() para passar todos os os valores de uma única vez, os valores serão tratados como STRINGS, diferente do que que alguns programadores conhecem, que seria automático.

 

 

isso se eu colocar PARAM_STR;

se for PARAM_INT;// e inteiro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo retirado do manual do PHP:

$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
   FROM fruit
   WHERE calories < ? AND colour = ?');
$sth->execute(array($calories, $colour));

 

Apesar de $calories ser um inteiro, utilizando bind através do execute, seria o mesmo que fazer isso:

$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
   FROM fruit
   WHERE calories < ? AND colour = ?');
$sth->bindParam(1, $calories, PDO::PARAM_STR);
$sth->bindParam(2, $colour, PDO::PARAM_STR);
$sth->execute();

 

Não importa o tipo do valor, através do execute, será tratado com PDO::PARAM_STR.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja deu certo aqui

 

era so isso

$Array[':valor']  = array(9.8,PDO::PARAM_INT); 
$Array[':qtd']    = array(5,PDO::PARAM_INT);

//ai eu dei um foreach la nos binds

 

opa resolvel não, assim da certo que é só eu fazer assim

 

$Array[':valor']  = array(9.8,PDO::PARAM_INT); 
$Array[':qtd']    = array(5,PDO::PARAM_INT);

foreach($Array as $c=>$v){
bindValue($c,$v[0],$v[1]);
}

 

o problema e como vou passar isso como imput, se o input não passa valor como array.

apenas

 

<input type="text" name=":valor[PDO::PARAM_INT]" value="2" />

//que retorna
array(':valor'=>array('PDO::PARAM_INT'=>2));

 

-------------------------------

 

ja foi.

usei no $v

array_keys e array_values

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.