si qualcosa del genere
se il codice per l'invio del nuovo messaggio è uguale a quello di risposta, molto semplicemente, metti, nella risposta, un campo che indica l'id del messaggio al quale si sta rispondendo (non per forza il primo dell'elenco)
il sistema, quando riceve il tutto, estrae dal db il codice identificativo della discussione collegato al messaggio al quale si sta rispondendo e lo utilizza anche per la risposta ... se invece il campo manca lo genera e lo inserisce
ti conviene utilizzare un valore non progressivo, un codice, che puoi generare per comodità o tramite un MD5 o con un CRC32 se vuoi sempre un numero
con md5 fai il campo char(32) e usi
md5(uniqid(microtime(), true))
mentre con CRC32 fai un campo INT(10) UNSIGNED e fai
sprintf('%u', crc32(uniqid(microtime(), true)))