Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite gente,
Estou tentando fazer um insert dinâmico para qualquer formulário. Mas não esta dando certo.
Este é o acoes.php
$inputs = $_POST['inputs'];
$fields = implode(',', array_keys($inputs));
$values = ':' . str_replace(',', ',:', $fields);
$stmt = $pdo->prepare("INSERT INTO {$_GET['tabela']} ({$fields}) values({$values})");
$stmt->execute($inputs);
Tenho jquery que envia via post os inputs em array, porém o value tabela é via GET.
Quando executo da um erro:
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /home2/sabecomp/public_html/admin/includes/acoes.php on line 14
Minha array tem:
Array ( [0] => Array ( [name] => categoria [value] => Lavadoras de Alta Pressão ) )
Se alguém puder me dizer o que está errado eu agradeço.
Eu tentei assim Adson mas o erro é o mesmo, tenho a impressão que ocorre por que o inicio da array é 0.
Consegui fazer, por enquanto está dando certo, vou agora vou tentar fazer um SELECT para ver se já existe o registro.
$inputs = $_POST['inputs'];
$fields = array();
$values = array();
for ($i=0; $i < sizeof($inputs); $i++) {
$fields[] = $inputs[$i][name];
$values[] = $inputs[$i][value];
}
$array = array_combine($fields,$values);
$key = implode(',', array_keys($array));
$val = ':' . str_replace(',', ',:', $key);
$insert = $pdo->prepare("INSERT INTO {$_GET['tabela']} ({$key}) VALUES({$val})");
$insert->execute($array);
if($insert->rowCount() == 0):
echo $insert->errorInfo();
else:
echo "Categoria cadastrada com sucesso.";
endif;
Amigo coloque assim $stmt->execute();