MYSQL Вставить, где не существует с PDO

Я условно вставляю значения в базу данных MySQL с помощью команды PHP PDO. Условие гласит, что если строка для вставки уже существует, не вставляйте ее. Если он не существует, вставьте строку. Код работает очень хорошо, когда я выполняю через PHPmyadmin, и, таким образом, меняются переменные PDO (:a, :b) со статическими номерами.

Я получаю следующую ошибку:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name '0'' in...

Код PHP выглядит следующим образом:

Я готовлю заявление SQL ...

$InsertFoo = $pdo->prepare("

    INSERT INTO `MyTbl` (
                            `ColA`,
                            `ColB`
                            )
    SELECT * FROM ( SELECT :a, :b ) AS tmp
    WHERE NOT EXISTS (
        SELECT `MyTbl`.`ColA`
        FROM `MyTbl`
            WHERE `ColA` = :aa
            AND `ColB` = :bb
        )
    LIMIT 1

");

А затем переберите массив, чтобы выполнить подготовленный оператор снова и снова. (Массив был сгенерирован ранее с использованием SimpleXML, поэтому->, Если вы не знакомы с SimpleXML, просто подумайте$foo->fooA как переменная, которая изменяется для каждого цикла.)

foreach ($loopme as $foo) {

    // query to be executed for ticket insertion
    $TicketsToInsert->execute(array(
                                    a => $foo->fooA,
                                    b => $foo->fooB,
                                    aa => $foo->fooA,
                                    bb => $foo->fooB
                                    ));

}

Любой совет высоко ценится:

Как примечание, есть много подобных вопросов, но я не нашел ни одного, который точно касается этой проблемы PDO на вставке

PDO может выполнять только одну инструкцию за разТа же ошибка, похоже, другой источникПеременные PDO внутри выбора с последующимWhere заявление

Большое спасибо!

Ответил

Фил предложил гораздо более простое решение применения уникального ограничения для нескольких строк, которое, в свою очередь, отклонило бы вновь вставленную строку, уникальную для указанных строк. Это в отличие от проверки на отсутствие строки, которая должна быть вставлена. Более подробная информация ниже.

Ответы на вопрос(1)

Ваш ответ на вопрос