次のPDO接続クエリを使用する必要があります。
$fields = array(
'titulo',
'tipo_produto',
'quantidade_peso',
'unidade_de_venda',
'unidades_por_caixa',
'caixas_piso',
'pisos_palete',
'tipo_de_palete',
'unidades_palete',
'caixas_palete',
'uni_diametro',
'uni_largura',
'uni_profundidade',
'uni_altura',
'uni_peso_bruto_unidade',
'caixa_largura',
'caixa_profundidade',
'caixa_altura',
'altura_palete',
'volume_unidade',
'volume_caixa',
'volume_palete',
'peso_caixa',
'peso_palete'
);
$sql = 'INSERT INTO ficha_item ( %s ) VALUES ( %s )';
$fieldsClause = implode(', ', $fields);
$valuesClause = implode(', ', array_map(function($value) {
return ':' . $value;
}, $fields));
$sql = sprintf($sql, $fieldsClause, $valuesClause);
$stmt = $db->prepare($sql);
$stmt->execute(array_intersect_key($_POST, array_flip($fields)));
これは私に次のエラーを返していました:
Parse error: syntax error, unexpected T_FUNCTION, expecting ')'
少し掘り下げてみると、匿名関数はPHP 5.3でのみ実装されているようです。これを5.2で機能させるには、create_functionを使用する必要があります。PHPはまだかなり新しいので、正しいものを見つけるのに問題があります。ここでの構文では、$value変数とそれをcreate_functionに正しく実装する方法もよくわかりません。
ここでいくつかのヘルプ、またはcreate_functionの代替を探しています。