Мне нужно сохранить решение массива $solution
в таблицу SQL, только если $solution[$i][0]
принадлежит к результату запроса SELECT num_arr FROM Schedule WHERE num_arr<>''
. Если он не принадлежит ему, то строка $ i не должна сохраняться в таблице SQL. Ниже представленный запрос кажется неправильным. Как реализовать описанную задачу? Каким будет правильный подход?
$query_land = "INSERT INTO `Sequence` (`num_arr`,`start`,`fin`,`way_id`) VALUES ('".$solution[$i][0]."','".$solution[$i][1]."', '".$solution[$i][2]."','".$solution[$i][3]."') WHERE '".$solution[$i][0]."' IN (SELECT num_arr FROM Schedule WHERE num_arr<>'')";
Статус INSERT
имеет два варианта:
INSERT INTO tableX (a, b, c, ...) VALUES (1, 2, 3, ...) ;
а также
INSERT INTO tableX (a, b, c, ...) SELECT 1, 2, 3 FROM ... ; --- the same or another table or many tables
dual
– системная таблица с ровно 1 строкой. Его можно использовать для разных вещей. Здесь он используется так, что VALUES (...)
переписывается как SELECT ...
где у нас нет подходящей таблицы для включения в предложение FROM
:
$query_land = "INSERT INTO `Sequence` (`num_arr`,`start`,`fin`,`way_id`) SELECT '".$solution[$i][0]."','".$solution[$i][1]."', '".$solution[$i][2]."','".$solution[$i][3]."' FROM dual WHERE '".$solution[$i][0]."' IN (SELECT num_arr FROM Schedule WHERE num_arr<>'')";