PHP: stmt-> execute () falha, mas o erro está vazio

O snippet seguinte está no meu arquivo php, que figura como interface REST.

(...) if ($stmt = $connection->prepare("INSERT INTO Resource VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)")){ $stmt->bind_param("sssssssii", $email, $timestamp, $title, $desc, $lat, $lng, $alt, $full, $cat); // 1) if($stmt->execute()){ // insertion of Resource successful // 2) }else{ // insertion of Resource failed echo "INSERTION_RESOURCE_FAILED"; $stmt->close(); die; } (...) 

A versão anterior, que foi executada corretamente, não tinha os dois campos inteiros adicionais como parâmetros. Eu “debugged” o arquivo php, colocando echos lá. Na posição 1) recebi o eco de volta, na posição 2) não. Isso significa para mim que o stmt-> execute () falha. Mas se isso falhar, por que eu também não recebo o eco do bloco else? Como posso corrigir melhor esses problemas? Observe que eu verifiquei os valores POST, eles estão corretos.

Eu também declarou

error_reporting(E_ALL);

logo após <?php , e

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

após cada conjunto de consulta. Ainda assim, nenhum erro é repetido. Qual poderia ser o problema? ~

ATUALIZAR

Como Linus mencionou, era o display_errors() ausente display_errors() . Então, finalmente descobri que era um problema com uma chave estrangeira. Mas, graças à sua resposta, eu finalmente consegui depurar o PHP alguns prazeres!

   

Ok, então o erro foi de fato que o display_errors() ausente display_errors() . Somente depois de declarar o script retornou um stackstrace do erro. No meu caso, era um problema relacionado ao SQL.

Seguir é o início do script:

 < ?php ini_set("display_errors", 1); ini_set("track_errors", 1); ini_set("html_errors", 1); error_reporting(E_ALL); // (...)