PDO используют в первую очередь для удобства, чтобы код не покрывать лишним лапшекодом из нативных расширений. А вот тему перекручивать "как правильно использовать проверки результата", на универсальность, с булочкой кунжутом и бла-бла-бла - No beautiful Поэтому даже написал, что ты следовательно и процитировал
PHP: ALTER TABLE `article`.`likes` DROP PRIMARY KEY, ADD PRIMARY KEY (`id_user`, `id_post`) USING BTREE; создал первичный ключ. по ссылке сделал исключения но у меня идет недопонимания а как же оно работает, в случае ошибки я хочу увидеть ее посмотреть что попало в нее. PHP: $already_exists = false; $stmt = $pdo->prepare("SELECT `id` FROM `posts` WHERE `id` = ?"); $stmt->execute([(int)$filter['id']]); if ($stmt->rowCount() > 0) { $already_exists = true; }// else{ try { $stmt = $pdo->prepare("INSERT INTO `likes` (`id_user`, `id_post`) VALUES (?,?)"); $stmt->execute([(int)$uid, (int)$filter['id']]); } catch (PDOException $e) { if ($e->errorInfo[1] == 1062) { $already_exists = true; } else { throw $e; } } // }
Первая $already_exists = true; зачем нужна? Может, хотели присвоить false? И закрывающую фиг. скобку, которая там, перенесите в самый конец. --- Добавлено --- Как работает что? Исключения? Если в блоке try возникнет исключение (при должной настройке ошибки PDO будут вызывать исключения), управление будет передано в блок catch, в котором вы уточняете ошибку. --- Добавлено --- А я понял, откуда вы взяли эту команду. Тот ответ не самый удачный. См. на «степень полезности». Там SELECT – аналог того, от которого я советовал отказаться. Если у вас отсутствует «лайкаемый» пост, вы просто выводите ошибку 404.