Una declaración preparada solo puede ejecutar una consulta MySQL. Puedes preparar tantas sentencias como quieras en diferentes variables:
$stmtUser = $sql->prepare("INSERT INTO user (id_user, username, pw, email) VALUES (?,?,?,?)");
$stmtProc = $sql->prepare("INSERT INTO process (id_user, idp) VALUES (?,?);");
Y luego ejecutarlos más tarde. Si desea asegurarse de que ninguno se ejecute nunca a menos que ambos puedan ejecutarse, entonces debe analizar las transacciones, como dijo Thomas.
Además, un consejo general:"llamar a la función miembro en un no objeto" es el error estándar que recibe cuando prepare()
falla y entonces $stmt
no es en realidad un objeto de declaración preparada. Por lo general, significa que debe buscar un error en su prepare()
declaración en lugar de cualquier cosa posterior.