Utilizzo mysqli così:

Codice PHP:
$qwt "INSERT INTO `ordini` (`campo1`, `campo2`, `campo3`, `campo4`, `campo5`, `campo6`, `campo7`, `campo8`, `campo9`, `campo10`, campo11) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$result $connessione->prepare($qwt);
$par = array($idclientev$ragionesociale$idclientes$ricevente$indirizzoricevente$data$altredate$pagamento$descpagamento$note$idmioordine);
$result->bind_param('isissssissi'$par[0], $par[1], $par[2], $par[3], $par[4], $par[5], $par[6], $par[7], $par[8], $par[9], $par[10]);
$result->execute(); 
Questo è ciò che faccio per il primo insert. Utilizzo un array per i parametri perchè dopo ho una funzione che mi salva la query in un file di log.
Attualmente ho creato un idordine (che non è quello principale della tabella) dato da: giorno(2cifre)+mese(2cifre)+anno(4cifre)+ora(2)+mi nuti(2)+secondi(2)+numero random da 1 a 9+codiceordinante(tutto numerico)
Inserendo quello nella tabella ordini, dopo farei l'update della tabella carrello, ma se si potesse recuperare l'id dell'insert appena fatto non sarebbe male.
Preciso che un ordinante è impossibile che faccia più di un ordine al minuto (in ogni caso nel mio id ho messo i secondi + un numero random), mentre invece potrebbe essere che due persone facciano un ordine nello stesso momento.

Grazie