erison 63 Denunciar post Postado Setembro 25, 2012 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
shini 318 Denunciar post Postado Setembro 25, 2012 você pode passar um array para o execute(), fazer os binds. Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Setembro 25, 2012 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
erison 63 Denunciar post Postado Setembro 25, 2012 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
Gabriel Heming 766 Denunciar post Postado Setembro 25, 2012 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
erison 63 Denunciar post Postado Setembro 25, 2012 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