Не ищите сообщения об ошибке там, где их нет.
query в случае ошибки возвращает false. А у false никакого errorCode быть не может.
Используйте исключения и подготовленные выражения.
--$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
--$conn -> query("SET NAMES utf8");
++$conn = new PDO(
++ "mysql:host=$host;dbname=$dbname",
++ $username,
++ $password
++ [
++ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
++ PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'",
++ ],
++);
--$err = $conn -> query("INSERT INTO RECIPE(recipe_id,aspect_ratio,yields,cook_time_minutes,country,descriptions,prep_time_minutes,total_time_minutes,name,thumnai_url) VALUES('$id','$asp','$yie','$c_t_m','$country','$desc','$p_t_m','$t_t_m','$name','$t_url')");
--echo "\nrec PDOStatement::errorCode(): ";
--print $err->errorCode();
++$req = $conn->prepare(<<<REQ
++ INSERT INTO RECIPE (
++ recipe_id, aspect_ratio, yields, cook_time_minutes, country, descriptions,
++ prep_time_minutes,total_time_minutes,name,thumnai_url
++ ) VALUES (
++ :recipe_id, :aspect_ratio, :yields, :cook_time_minutes, :country, :descriptions,
++ :prep_time_minutes, :total_time_minutes, :name, :thumnai_url
++ )
++REQ);
++$req->execute([
++ 'recipe_id' => $data['id'],
++ 'aspect_ratio' => $data['aspectRatio'],
++ 'yields' => $data['yields'],
++ 'cook_time_minutes' => $data['cookTimeMinutes'],
++ 'country' => $data['country'],
++ 'descriptions' => $data['description'],
++ 'prep_time_minutes' => $data['prepTimeMinutes'],
++ 'total_time_minutes' => $data['totalTimeMinutes'],
++ 'name' => $data['name'],
++ 'thumnai_url' => $data['thumbnailUrl'],
++]);