Rolf b: ON DUPLICATE KEY UPDATE

Beitrag lesen

Jedes Fragezeichen muss separat gebunden werden.

Wenn Du einen einmal gebundenen Parameter an mehreren Stellen verwenden willst, brauchst Du benannte Parameter, das kann mysqli nicht, das kann nur PDO.

Du hättest aber durchaus auch deine POST-Variablen verwenden können. Das Problem war, dass PHP Variablen in Strings nur dann auflöst, wenn der String in doppelten Anführungszeichen steht oder ein heredoc-String ist.

$gruss = "Hallo";
echo "$gruss Welt";   // --> Hallo Welt
echo '$gruss Welt';   // --> $gruss Welt

Für dich also z.B. so. Bei einem int-Parameter kann man intval gegen Injektionsattacken nehmen, einen Stringparameter musst Du binden oder real-escapen.

$id = intval($_POST['id']);
$sql = "SELECT * FROM TABLE WHERE ID=$id";

Rolf