Rolf b: jQuery Sortable + PHP

Beitrag lesen

Nachdem dedlfix das "+1" Problem gelöst hat, möchte ich noch einen Hinweis zum SQL einwerfen.

// Deins, etwas reformatiert

foreach ($_GET['listItem'] as $position => $item)
{
    if ($stmt = $mysqli->prepare("Update test SET sort=? WHERE id = ?"))
    {    
        $sort = $position;
        $id   = $item;

        $stmt->bind_param("ss", $sort, $id);
        $stmt->execute();
    }
}

Gebundene Parameter benutzt man etwas anders. Wenn eine Schleife eingesetzt wird, macht man den prepare nur einmal. Und bind_param bindet eine Referenz auf Variablen an das Statement, d.h. auch das macht man nur einmal und schreibt danach nur noch die Werte in die gebundenen Variablen. Ganz wichtig ist dann am Ende der stmt->close, um Ressourcen und Bindungen wieder freizugeben.

// Mein Vorschlag
if ($stmt = $mysqli->prepare("Update test SET sort=? WHERE id = ?"))
{    
    $stmt->bind_param("ss", $sort, $id);
    foreach ($_GET['listItem'] as $position => $item)
    {
        $sort = $position;
        $id   = $item;
        $stmt->execute();
    }
    $stmt->close();
}

Ob man die foreach-Variablen direkt binden kann, weiß ich nicht, das müsste man mal ausprobieren. Es wäre ein netter Platzsparer.

    $stmt->bind_param("ss", $position, $item);
    foreach ($_GET['listItem'] as $position => $item)
    {
        $stmt->execute();
    }

Rolf