sql >> Base de Datos >  >> RDS >> Mysql

Valores de matriz de inserción de PDO

Primero, su orden de evaluación es incorrecto. No debe configurar una variable con un valor POST ANTES de verificar si el valor POST existe. Debe verificar su existencia y luego configurarlo en una variable solo si existe.

$id = $conn->lastInsertId(); // obtained from above (*)

if (!isset($_POST['services'])) {
    echo  'Nothing Selected';
} else {
    $services = $_POST['services']; // array(0 => 1, 1 => 2, ...)

En segundo lugar, supongo que ya tiene una conexión anterior (*), por lo que no es necesario volver a conectarse. Como su consulta es corta, puede usar ? para enlazar sus parámetros como se muestra en Ejemplo n.º 3 .

    try {
        $stmt = $conn->prepare('INSERT IGNORE INTO marketing_lookup SET domain_id = ?, service_id = ?');
        foreach ($services as $serviceId) {
            $stmt->execute(array($id, $serviceId));
        }
    } catch (PDOException $e) {
        echo $e->getMessage();
    }
}

$conn = null; // pointless

Es posible que desee buscar transacciones ya que está haciendo múltiples inserciones.