POSTで受け取った値でprepara+bindvalueを自動作成する方法を自分で作ってみたのですが、
$stmt = $pdo -> prepare($sql);の部分でエラーが出てしまいます。[42000]
改善策をお願いします。

$table = "$_GET['table']";
$clmname = '';
$valname = '';

foreach ($_POST as $key => $value) {
$clmname .= $key.", ";
$valname .= ":".$key.", ";
}
unset($key);

//末尾のコンマと空白削除
$clmname = substr($clmname, 0, -2);
$valname = substr($valname, 0, -2);

$sql = "INSERT INTO $table($clmname) VALUES($valname)";

$stmt = $pdo -> prepare($sql);
foreach ($_POST as $key => $value) {
$stmt -> bindValue(":$key", $clan_policy, PDO::PARAM_STR);
}
$stmt -> execute();