sql >> データベース >  >> RDS >> Mysql

PDOは配列値を挿入します

    まず、評価の順序が間違っています。 POST値が存在するかどうかを確認する前に、POST値を使用して変数を設定しないでください。その存在を確認してから、存在する場合にのみ変数に設定する必要があります。

    $id = $conn->lastInsertId(); // obtained from above (*)
    
    if (!isset($_POST['services'])) {
        echo  'Nothing Selected';
    } else {
        $services = $_POST['services']; // array(0 => 1, 1 => 2, ...)
    

    次に、以前からの接続がすでにあると想定しています(*)-したがって、再接続する必要はありません。クエリが短いので、?を使用できます 例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
    

    トランザクション を調べることをお勧めします 複数の挿入を行っているため。



    1. Windows10でPostgresパス変数を設定する方法

    2. mysqlフィールドに保存されますが、エコー時に改行はありません

    3. MYSQLのLIKEと=の違いは?

    4. mysqli_query()は常にtrueを返します