Mysqli error - ERROR: You have an error in your SQL syntax

For the life of me I can't see why I'm getting this error:

ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(components_ID, CompStep, MaterialQty, materials_ID) ' at line 2

SQL code variable:

$insertmat = "INSERT INTO components_has_materials 
              SET (components_ID, CompStep, MaterialQty, materials_ID) 
              VALUES ('$compId[0]', '$recStep', '$matQty', '$matCode')";

If statement from PHP code that is attempting to insert into the db:

                   if(mysqli_query($db, $insertmat)){
                        mysqli_close($db);
                        $addMatError = "Component material added";
                    }else{
                        echo 'ERROR: '. mysqli_error($db);
                    }

What's wrong with this bit of code?

1 answer

  • answered 2019-02-10 12:26 Ed Cottrell

    Remove the SET. You don’t use SET when providing a columns list and a VALUES list. This is explained in the MySQL documentation for INSERT.

    As shown in the docs, these are two (alternative) syntax options for an INSERT query:

    INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
        [INTO] tbl_name
        [PARTITION (partition_name [, partition_name] ...)]
        [(col_name [, col_name] ...)]
        {VALUES | VALUE} (value_list) [, (value_list)] ...
        [ON DUPLICATE KEY UPDATE assignment_list]
    
    INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
        [INTO] tbl_name
        [PARTITION (partition_name [, partition_name] ...)]
        SET assignment_list
        [ON DUPLICATE KEY UPDATE assignment_list]