"obviously as a normal MySQL query this would be straightforward"
not really that obvious actually, how would you do it in in a normal MySQL query?
MySQLi really isn't that different from MySQL.
you're example code above looks like it should work as long as the WADALastBatchNo recordset code is before the delete and it is properly filtering.