Ho risolto, c'era un errore nel ciclo di scrittura della tabella. Posto il codice corretto se servisse a qualcuno:

// create new PDF document
$pdf = new TCPDF('L', PDF_UNIT, 'A4', true, 'UTF-8', false);

// set font
$pdf->SetFont('helvetica', '', 6);

// add a page
$pdf->AddPage();

//----------riga di intestazione

$intestazione="<tr>";
foreach($array_campi as $val)
{
$intestazione=$intestazione."<th>".$val."</th>";

}
$intestazione=$intestazione."</tr>";

$html="<table border=1>".$intestazione;

//---------corpo tabella
$i=0;
while ($row=@mysqli_fetch_array($result,MYSQLI_ASSOC))
{
$i=0;
foreach($array_campi as $val)
{
$i=$i+1;
If ($i==1){$riga=$riga."<tr>";}
$valore=$row[$val];
$riga=$riga."<td>".$valore."</td>";
If ($i==count($array_campi)){$riga=$riga."</tr>";}

}

}

$html=$html.$riga."</table>";

$pdf->writeHTML($html, true, false, false, false, '');

$pdf->Output('prova.pdf','D');