Así es .. la función mysql_query() sólo puede ejecutar una sentencia SQL a la vez. (y phpMyadmin lo que hace es aplicar un "explode()" al caracter ; que es el separador de instrucciones SQL y las ejecuta una por una ...)
Reordena tu código para ejecutar una sentencia a la vez .. pero como usas transacciones inicia y termina la transacción fuera de tu bucle donde vas ejecutando las sentencias SQL por separado.
Código PHP:
mysql_query("Begin");
for($n=1; $n<=$_POST['nreg']; $n++){
$sql2="insert into car (car1, car2) values ('".$_POST['car1']."', '".$_POST['car2']."'); ";
$dato2=mysql_query($sql2) or die (no_graba());
echo $sql2;
}
mysql_query("Commit");
Por cierto .. si usas Mysql 4.1.x en adelante con PHP 5.x en adelante puedes usar el nuevo "cliente" y nueva "extensión" de PHP para mysql. Me refiero a:
mysqli_xxxx() funciones de la extensión mysqli
www.php.net/mysqli
Con esas nuevas funciones .. ahora si que se pueden lanzar várias consultas SQL en una llamada a msqli_query()
Un saludo,